2013-09-05 2 views
0

Если я вызываю следующую функцию 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

Это рекурсивная функция, поэтому количество раз, когда она вызывается, зависит от ввода. Каждая рекурсия уменьшает n на 1, пока она не достигнет 0, и expt вызывается один раз для каждого вызова с ненулевым входом. Поэтому, если вы позвоните (infinite-series 10), expt будет называться 10 раз, и если вы сделаете это 300 раз, то expt будет называться итогом 3000 раз. Если вы вызываете infinite-recursion 300 раз с различными входами, общее количество вызовов до expt будет зависеть от этих входов.

Вы правы, что действительные значения, прошедшие до expt, будут -1 и n.

Смежные вопросы