Scheme编程语言中,要计算以下系列,需要什么递归函数?

问题描述

Scheme编程语言中需要什么递归函数来计算以下系列?需要说明

1 ^ 2/2 ^ 1 + 3 ^ 4/4 ^ 3 + 5 ^ 6/6 ^ 5 + 7 ^ 8/8 ^ 7 + 9 ^ 10/10 ^ 9

x

解决方法

那么,每个术语看起来像什么?它是n ^(n + 1)/(n + 1)^ n。并且您想在达到10时停止(因此,如果n> 10,则停止)。因此,编写一个具有单个参数n的函数,该函数可以是:

  • 如果n> 10,则返回0;
  • 将n ^(n + 1)/(n + 1)^ n加到在n + 2上调用自身的结果中。

然后,此参数为1的函数将计算所需的内容。向后退可能更容易:

  • 如果n
  • 在n-2上调用自身的结果中加上n ^(n + 1)/(n + 1)^ n;

然后使用具有参数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)))

但是我不推荐。

,
:category_id