python 递归问题

def a(n): if n==1:  print('asd')  return 10 else:  print(n)  return n*a(n-1) 上面的return 10 为什么要写成 return 1  呢 就是为什么到最后的返回结果还要*10呢上面的


chhhhha
浏览 1668回答 1
1回答

子木李

递归是这样的,比如说,需要算一个10!,那么,传入一个n=10,那么,首先,执行返回的是 10*a(9),然后a(9)继续执行,返回 9*a(8),......就这样一直执行,返回 2*a(1),因为n=1时就是递归的终止条件了,所以,a(1)返回了1,这里就是为什么 return 1了,然后就得到了 10!的值了,至于楼主所说的返回的结果*10,应该是具体语境的原因吧,比如,可能需要我计算的不是 n!阶乘,二十 n*n!,那么,当n=10时,最后的返回结果就需要乘以10了,也就是说,递归的那部分是计算n!的,至于最后返回的结果如何处理,那就看具体的语境了
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python