如果我调用以下函数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 ))))))
答案 0 :(得分:0)
这是一个递归函数,因此调用它的次数取决于输入。每次递归递减n
1
,直到达到0
,并且每次使用非零输入调用expt
时都会调用一次。因此,如果您致电(infinite-series 10)
,expt
将被称为10
次,如果您执行300
次,expt
将被称为3000
总计infinite-recursion
1}}次。如果您使用不同的输入拨打expt
300次,则expt
的总呼叫数将取决于这些输入。
您认为传递给-1
的实际值为n
和{{1}}是正确的。