gpt4 book ai didi

recursion - 帕斯卡的三角行序列

转载 作者:行者123 更新时间:2023-12-02 23:08:12 28 4
gpt4 key购买 nike

我目前正在寻找帕斯卡三角形的行序列。我想输入行号并输出列表中直到该行的数字序列。例如,(Pascal 4) 将给出结果 (1 1 1 1 2 1 1 3 3 1)

我正在尝试使用我发现的算法。这是算法本身:

Vc = Vc-1 * ((r - c)/c)

rc 应该是行和列,并且 V0=1。该算法可以在维基百科页面上标题为“计算和单个行或对角线”的部分中找到。

这是我到目前为止的代码:

(define pascal n)
(cond((zero? n) '())
((positive? n) (* pascal (- n 1) (/ (- n c)c))))

我知道这几乎没什么,但我一直在努力尝试使用 letlambda 来确定函数的作用域以合并列值。此外,我也一直在递归方面苦苦挣扎。我真的不知道如何建立基本案例以及如何进入下一步。基本上,我到处都迷路了。我知道这并没有显示出太多内容,但任何朝着正确方向迈出的一步都将不胜感激。

最佳答案

使用 entry 作为指导在维基百科中,这是算法的简单实现,用于计算给定行和列的帕斯卡三角形中的值,如链接中所述:

#lang racket

(define (pascal row column)
(define (aux r c)
(if (zero? c)
1
(* (/ (- r c) c)
(aux r (sub1 c)))))
(aux (add1 row) column))

例如,以下代码将返回前四行值,注意行和列均以零开头:

(pascal 0 0)

(pascal 1 0)
(pascal 1 1)

(pascal 2 0)
(pascal 2 1)
(pascal 2 2)

(pascal 3 0)
(pascal 3 1)
(pascal 3 2)
(pascal 3 3)

现在我们需要一个过程来将所有值粘在一起,直到所需的行;这适用于 Racket :

(define (pascal-up-to-row n)
(for*/list ((i (in-range n))
(j (in-range (add1 i))))
(pascal i j)))

结果符合预期:

(pascal-up-to-row 4)
> '(1 1 1 1 2 1 1 3 3 1)

关于recursion - 帕斯卡的三角行序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12413619/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com