1

我在学习 Scala 中的 Coursera函数式编程原理课程时正在学习 Scala

第一个练习说:

    1
   1 1
  1 2 1
 1 3 3 1
1 4 6 4 1

三角形边上的数字都是1,三角形里面的每个数字都是上面两个数字的和。编写一个函数,通过递归过程计算帕斯卡三角形的元素。

通过在 Main.scala 中实现 pascal 函数来完成这个练习,该函数接受 c 列和 r 行,从 0 开始计数并返回三角形中该点的数字。例如,pascal(0,2)=1、pascal(1,2)=2 和 pascal(1,3)=3。

一开始,我理解,因为他指的是我们都熟悉的“数字”,但后来他继续使用“元素”这个词。他这是什么意思?他要我计算什么?

我假设他对“数字”这个词感到厌烦,并认为,在将三角形中数字的名称定义为“数字”之后,他只是想使用新的东西,即“元素”,但无论我怎么数我都不能让参考工作。

我什至无法真正理解“列”这个词,因为这些数字不是垂直向上的。

你能解释一下他是怎么得到的pascal(1,3) == 3吗?

4

4 回答 4

3

你在考虑列有点错误。“第 x 列”是指“给定行中的第 x 个条目。

因此,如果您正在查看 function pascal(c,r),您可能想弄清楚第 r 行中的第 c 个数字是多少。

因此,例如:

pascal(1,2)对应于第三行的第二个条目

      1
    1   1
  1  *2*  1

pascal(1,3)希望您查看第 4 行中的第二个条目。

       1
     1   1
   1   2   1
 1  *3*  3   1
于 2013-02-15T22:30:12.390 回答
2

您可以简单地将三角形制作为“矩形”,一切都会变得显而易见:

cols-> 0 1 2 3 4

row-0  1
row-1  1 1
row-2  1 2 1
row-3  1 3 3 1
row-4  1 4 6 4 1

你说得对,三角形的“元素”是由数字组成的,虽然有细微的差别,但在这种情况下是微不足道的。

PS我个人建议更喜欢课程论坛来解决此类问题:

  1. 它将避免有关荣誉代码的争议性问题。
  2. 您的课程学员将更快地了解手头的问题
  3. 他们将有机会获得那些不参加课程的人无法获得的材料
  4. 这将有助于在课程学生中建立会员意识,并让你们有机会创造新的、可能富有成果的重新认识
于 2013-02-16T09:37:28.917 回答
2

只从左边数。(0,2) 是行中最左边的数字

1 2 1

所以 (1,3) 将是第二个数字

1 3 3 1

于 2013-02-15T22:20:00.890 回答
0

您要问的是违反 Coursera 荣誉守则:https ://www.coursera.org/maestro/auth/normal/tos.php#honorcode http://www.aiqus.com/questions/41299/coursera-cheatating -scala课程

于 2013-02-15T22:19:14.780 回答