递归为什么一定要return
def now(x,y):if y:
return x*now(x,y-1)
else:
return1
result=now(2,3)
print(result) 没有规定呀,也可以用列表,只是 return 更方便些 递归一定要return吗?
$ cat main.py
#!/usr/bin/env python
#coding=utf-8
def output(string, index):
if index < len(string):
output(string, index + 1)
print(string, end = '')
output("12345", 0)
print('')
$ ./main.py
54321
$ python爱好者. 发表于 2022-3-3 19:48
没有规定呀,也可以用列表,只是 return 更方便些
这个return 1是什么意思啊
本帖最后由 isdkz 于 2022-3-3 23:50 编辑
莱州刘德华 发表于 2022-3-3 20:02
这个return 1是什么意思啊
因为不能无限递下去,还得归,
所以得满足特定条件之后开始弹栈,return 1 就是就是停止递,开始归 递归需要的是一个能停止【递】的条件,【return】是停止【递】的措施
在本题中停止【递】的条件是y=0,【return 1】就开启了归的过程
x=2,y=3
2 * now(2,3-1)递1
2 * now(2,2-1)递2
2 * now(2,1-1)递3
y=0 -> return1
return 2 * 1 归3
return 2 * 2 归2
return 2 * 4 归1
print(8)
把1 2 4 代成now(x,y-1) 递归一定要 return 吗?
def foo(n):
print("递")
if n:
foo(n-1)
print("归")
foo(5)递
递
递
递
递
递
归
归
归
归
归
归 递归递归有递才有规
页:
[1]