嘴强王者 发表于 2021-10-5 13:53:34

请问一下,两种递归为何输出结果不一样

func1输出为3 2 1
func2输出为1 2 3
网络上有通过画图解释的 感觉说服力不强
def func1(x):
    if x > 0:
      print(x)
      func1(x - 1)


def func2(x):
    if x > 0:
      func2(x - 1)
      print(x)


func1(3)
func2(3)

suchocolate 发表于 2021-10-5 14:11:35

用vscode或pycharm的debug功能,观察每一步程序你就知道了。
“网上的说服性不强”,先思考一下自身的能力。

嘴强王者 发表于 2021-10-5 16:51:31

suchocolate 发表于 2021-10-5 14:11
用vscode或pycharm的debug功能,观察每一步程序你就知道了。
“网上的说服性不强”,先思考一下自身的能力 ...

爬一边去 我知道怎么回事还来问?

大马强 发表于 2021-10-5 17:14:10

你说的说服力不强是你看不懂,还是说看懂了但不认同?

大马强 发表于 2021-10-5 17:15:47

第一个好理解
第二个先递归到 x = 0 ,然后再去打印 3 2 1

嘴强王者 发表于 2021-10-5 20:42:43

大马强 发表于 2021-10-5 17:14
你说的说服力不强是你看不懂,还是说看懂了但不认同?

看懂了 但是讲了个大概 没有讲的很详细

大马强 发表于 2021-10-5 21:01:52

拿个纸笔来画画流程
函数为方框,变量放里边
调用设置之上到下

qq1151985918 发表于 2021-10-5 21:14:57

这种函数不应该叫递归,因为只有递的过程,没有归,更准确应该叫嵌套,层层嵌套

func1 是先打印,然后再执行函数,执行 func1(3) 打印 3 执行 func1(2) 打印 2执行 func1(1) 打印 1 执行 func1(0) 不打印,无结果
而 func2 是先执行函数,再打印,执行 func2(3) , 执行 func2(2) ,执行 func2(1),执行 func2(0) ,然后不打印,打印1 打印2 打印3

嘴强王者 发表于 2021-10-5 21:22:12

大马强 发表于 2021-10-5 21:01
拿个纸笔来画画流程
函数为方框,变量放里边
调用设置之上到下

画流程图这个解释知道怎么回事,只看代码的话,不明白func2先递归的话,为什么不输出x
def func2(x):
    if x > 0:
      func2(x - 1)
      print(x)

嘴强王者 发表于 2021-10-5 21:29:07

qq1151985918 发表于 2021-10-5 21:14
这种函数不应该叫递归,因为只有递的过程,没有归,更准确应该叫嵌套,层层嵌套

func1 是先打印,然后再 ...

明白了 感谢大佬
页: [1]
查看完整版本: 请问一下,两种递归为何输出结果不一样