def a(n): if n==1: print('asd') return 10 else: print(n) return n*a(n-1) 上面的return 10 为什么要写成 return 1 呢 就是为什么到最后的返回结果还要*10呢上面的
1 回答
已采纳
子木李
TA贡献46条经验 获得超27个赞
递归是这样的,比如说,需要算一个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!的,至于最后返回的结果如何处理,那就看具体的语境了
添加回答
举报
0/150
提交
取消