python recursion_python递归函数如何用于tri_recursion函数

尝试使用铅笔和纸张跟踪功能.在这种情况下,print语句insde该函数可能有点误导.

考虑这部分程序,

if(k>0):

result = k+tri_recursion(k-1)

...

从这里,

tri_recursion(6) = 6 + tri_recursion(5)

因此,为了得到tri_recursion(6)的结果,我们必须得到tri_recursion(5)的结果.遵循这个逻辑,问题简化为:

tri_recursion(6)

= 6 + tri_recursion(5)

= 6 + 5 + tri_recursion(4)

= 6 + 5 + 4 + tri_recursion(3)

= 6 + 5 + 4 + 3 + tri_recursion(2)

= 6 + 5 + 4 + 3 + 2 + tri_recursion(1)

= 6 + 5 + 4 + 3 + 2 + 1 + tri_recursion(0)

现在注意0不大于0所以程序移动到else子句的主体:

else:

result = 0

...

这意味着tri_recursion(0)= 0.因此:

tri_recursion(6)

= 6 + 5 + 4 + 3 + 2 + 1 + tri_recursion(0)

= 6 + 5 + 4 + 3 + 2 + 1 + 0

= 21

注意事项

>在运行这个program.k永远不会等于-1,事实上它是不可能的.

>根据“编译器在程序中移动”来考虑控制流是错误的.编译器在执行期间不执行任何操作(JIT是另一回事).最好从程序语言中的控制流程/执行顺序进行思考,在函数式编程和逻辑编程中的关系中进行等级考虑.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值