方案函数时间调用

时间:2013-09-05 17:41:35

标签: function scheme

如果我调用以下函数300次,expt被调用多少次?我倾向于认为它是300.此外,每次通话中传递的实际值是多少?它们是-1还是n?

(define (infinite-series n )
    (if (= n 0)
        1
        (+ (* 4.0 (/ (expt -1 n) (+ 1 (* n 2)))
                  (infinite-series (- n 1 ))))))

1 个答案:

答案 0 :(得分:0)

这是一个递归函数,因此调用它的次数取决于输入。每次递归递减n 1,直到达到0,并且每次使用非零输入调用expt时都会调用一次。因此,如果您致电(infinite-series 10)expt将被称为10次,如果您执行300次,expt将被称为3000总计infinite-recursion 1}}次。如果您使用不同的输入拨打expt 300次,则expt的总呼叫数将取决于这些输入。

您认为传递给-1的实际值为n和{{1}}是正确的。