我目前正在尋找帕斯卡三角形的行序列。我想輸入行號並將列表中的數字序列輸出到該行。例如,(Pascal 4)
會給出結果(1 1 1 1 2 1 1 3 3 1)
。帕斯卡的三角形行序列
我想使用我發現的算法。這裏是該算法本身:
V Ç = V C-1 *((R - C)/ C)
- [R和Ç應該是行和列,並且V = 1。該算法可以在維基百科頁面的「計算和單行或對角線」部分中找到。
下面是代碼,我到目前爲止有:
(define pascal n)
(cond((zero? n) '())
((positive? n) (* pascal (- n 1) (/ (- n c)c))))
我知道這根本算不上什麼,但我一直在試圖找到一個let
作用域功能掙扎了很多或lambda
納入列值。另外,我也在遞歸上掙扎。我不知道如何建立基本案例以及如何進入下一步。基本上,我到處都迷路了。我知道這並沒有太多的表現,但是我們將不勝感激。
感謝您的快速響應! 所以第一個函數有c作爲計數器。 let循環將c設置爲1,並且c將每次加1,直到r和c相等,並返回哪一行。我可以看到算法是如何實現的。我不確定的一部分是行(列表1)。所以這使得'(1)。排過後(汽車排),這是否意味着我們現在有一個空集?該元素1現在與( - r 1)(/ c)相乘。我的理解是,缺點應該是組合元素和列表。我看到了這個元素。但是列表應該排在後面? – Nopiforyou
在函數的最後一行,缺點是使用WikiPedia公式計算的新元素位於現有行的開頭。例如,當被調用爲(第4行)時,變量行最初爲(1),那麼在第一次通過循環時變爲(3 1)並且c變爲2,則第二次通過循環行變成(3 3 1 )和c變爲3,那麼第三次通過循環行變爲(1 3 3 1)並且c變爲4,那麼第四次通過循環r和c都是4,所以函數返回行的當前值,這是(1 3 3 1)。 – user448810