尾递归的跳转问题
来源:7-19 尾递归的优化
weixin_慕勒8023578
2022-02-27
jne Fib2+11h(0AA1520h)
这个地址 0AA1520h 是这样的
0AA1520h cmp ecx,1
0AA1523h je,Fib2+27h(0AA1536h)
尾递归调用的时候跳转到函数顶部,应该先判断是否等于0呀,怎么直接就判断是否等于1了?
写回答
2回答
-
易萧
2022-08-10
这个是编译器对代码逻辑进行优化了,因为第一次进函数时,这个值如果是小于等于1的,那就不会走到尾调用这一步,否则初值必大于2,此时再进行尾调用时,这个值发生递减,当这个值等于1时就已经是递归出口了,它永远都不会走到判0的时候,所以也就没有必要判断是否等于0了。
00 -
quickzhao
2022-02-27
同学,请问问题详细描述清你问题的上下文和C++源码,不要直接放一段汇编代码,谢谢
032022-03-02
相似问题