This topic created in 2463 days ago, the information mentioned may be changed or developed.
在 python 中这个 return ( val )为什么递归可以使函数倒着 print 呢?
def divide(n,val):
n += 1
if val / 2 > 1:
aa = divide(n,val/2)
print(aa)
print(n)
return(val)
divide(0,50.0)
运行结果:
1.5625
5
3.125
4
6.25
3
12.5
2
25.0
1
这个怎么理解呢??
7 replies • 2019-08-15 10:50:35 +08:00
 |
|
1
Livid Aug 14, 2019 1
V2EX 的主贴里是支持使用 Markdown 来格式化代码的。
```python
Your code is here
```
|
 |
|
2
ranleng Aug 14, 2019
因为你 print 在 调用自己的 后面运行的
|
 |
|
3
noqwerty Aug 14, 2019 via Android
你可以纸笔写一下执行 divide(0, 4)的时候每一步是什么样的,理解了概念就好了
|
 |
|
4
cherbim Aug 14, 2019
不就该这样输出么,第一次递归的时间,aa,nd 都没被输出,第二次也没输出,...最后一次递归 aa,n 才输出,然后依次往上返回输出
|
 |
|
5
Universe Aug 14, 2019 via Android
这个可以去理解一下二叉树递归方式的后序,中序,前序遍历
|
 |
|
6
happykjoy Aug 15, 2019
谢谢各位朋友的回复。 我把代码改了,试了下,终于明白了 ```python
def divide(n,val): n +=1 if val/2>1: print(n,val) aa = divide(n,val/2) print(n,aa)
divide(2,10.0)
``` 结果输出: ```python 3 10.0 4 5.0 5 2.5 5 None 4 None 3 None ```
|