def rec_naive(a,b):
while a>0:
b + rec_naive(a,b)
a=a-1
return b + rec_naive(a,b)
print rec_naive(5,2)
我不确定我做错了什么,但我不断收到错误消息:超出最大深度递归。我不明白为什么这个while循环不会起作用,因为我把变量的计数放在了a。
答案 0 :(得分:1)
问题是即使你试图用循环限制调用,它也不能通过第一次调用,因为它与起始条件完全相同。试试这样的事情
def rec_naive(a, b):
if a < 1:
return 0
return b + rec_naive(a - 1, b)
答案 1 :(得分:0)
我尝试使用以下代码在每次调用a
后检查rec_naive(a,b)
的值:
def rec_naive(a,b):
while a>0:
print a
raw_input()
b + rec_naive(a,b)
a=a-1
return b + rec_naive(a,b)
print rec_naive(5,2)
我始终可以看到a
的值为5
,这意味着永远不会调用a = a - 1
。试试下面的代码:
def rec_naive(a,b):
if a ==0:
return 0
return b + rec_naive(a-1,b)
print rec_naive(5,2)
答案 2 :(得分:0)
使用while loop
将iterative
方式乘以5 * 2
,我认为这是您的目标。
使用迭代。
def iter_naive(a, b):
res = 0 # variable to add to each iteration
while a > 0:
res += b # add b each time through the loop
a -= 1 # decrement a by one each iteration
return res # return total
使用recursion您需要一个基本案例:
def rec_naive(a, b):
a -= 1
if a == 0: # base case
return b # if a is equal to 0 we will stop and return the value of b
return b + rec_naive(a, b)