【发布时间】:2020-12-06 16:05:50
【问题描述】:
Scheme 编程语言中计算以下序列所需的递归函数是什么?需要解释
1^2/2^1 + 3^4/4^3 + 5^6/6^5 + 7^8/8^7 + 9^10/10^9
【问题讨论】:
Scheme 编程语言中计算以下序列所需的递归函数是什么?需要解释
1^2/2^1 + 3^4/4^3 + 5^6/6^5 + 7^8/8^7 + 9^10/10^9
【问题讨论】:
那么,每个术语是什么样的?它是 n^(n+1)/(n+1)^n。并且您想在达到 10 时停止(因此,如果 n > 10,则停止)。因此,编写一个带有单个参数 n 的函数,它可以:
然后这个带有参数 1 的函数将计算你想要的。倒退可能更容易:
那么参数为 10 的函数就是你想要的。
或者你可以这样做更有趣:
(define s
(λ (l)
((λ (c i a)
(if (> i l)
a
(c c
(+ i 2)
(+ a (/ (expt i (+ i 1))
(expt (+ i 1) i))))))
(λ (c i a)
(if (> i l)
a
(c c
(+ i 2)
(+ a (/ (expt i (+ i 1))
(expt (+ i 1) i))))))
1 0)))
但我不推荐。
【讨论】:
//power function
(define (power a b)
(if (zero? b) //base case
1
(* a (power a (- b 1))))) //or return power of a,b
// sum function for series
(define (sum n)
(if (< n 3) //base case
0.5
(+ (/ (power (- n 1) n) (power n (- n 1))) (sum (- n 2 )) ))) //recursion call
>(sum 10) // call sum function here .
【讨论】: