关于递归算法的理解
本帖最后由 竹逸 于 2022-9-19 21:45 编辑用递归算阶乘:
5! == 5*4*3*2*1
4! == 4*3*2*1
3! == 3*2*1
2! == 2*1
1! == 1
可以看出 4! 是 5! 中的一部分,所以 5! 可以写成 5*4!,那么 4! 也可以写成 4*3!,以此类推出公式:n*f(n-1)。
当n==1时,则return 1,即向内递进到最底层后,得到一个结果(f(n)的返回值 1),然后在向外一层一层的return,把内一层的计算结果返回给外一层,原路逐层返回。
也就是说当 return 结果为1时,即f(1) == 1时,n为2,把结果1返回给n为2的那层,即f(1)*2,而1*2的结果是n为3那层,即f(2)*3,依次得出为1*2*3*4*5,最后再把结果返回。
我这么理解对吗? 对的,另外你可以调试一下程序,一步一步执行代码,亲自体验一下这个一层一层向下调用,一层一层向上返回,这样会对递归更加印象深刻
提示,层数不要太深,不然你跟着跟着就不知道跟到哪一层了,^_^
先从1层开始,然后试试2层,3层,这样一层一层的加
你好 人造人 发表于 2022-9-19 21:44
对的,另外你可以调试一下程序,一步一步执行代码,亲自体验一下这个一层一层向下调用,一层一层向上返回, ...
我发现自己有个很大的毛病,就是喜欢用脑子思考程序的过程,却不会去一步步调式程序,我知道这样非常的不好,就是懒{:5_99:} ikun小吴 发表于 2022-9-19 21:46
你好
好 汉诺塔的问题,我脑子不够用了
页:
[1]