to steedhorse(晨星) :
领略君之谦虚治学分度,有点自愧不如。说实在的,在看到这个帖子的时候我第一反映就是不回答诸如此类拿着分就像面包一样在喊“我有面包,来食吧”。可是后来一想,也没有什么,可能是楼主一时没有太在意这些了。
一个产业的发展与成熟,总的有好多布道者。又何必斤斤计较那些这些小的细节呢?
the machine, cpu,won't care you are doing recursion or not.
But compiler does.
if you are doing tail recursion like
int fact(int i, int sofar){return i==0? 1: fact(i-1, sofar*i);}
smart compilers will use "jmp" instead of "call" in the assembly. That means, no pushing stack.
d <--栈指针 就变成左边的样子,如果在B内部再调用一个函数C,也是
--- 类似做法,压参数,栈指针上移等到B执行完毕,就做弹栈的
c 操作,也就是指针下移,回到执行点而已.
--- 而递归的做法没什么两样,在A中调用A也是重复上面的过程
--- ,压栈,压栈,压栈,然后再弹栈,弹栈,弹栈.根本不要额外
A的其它 判断什么东西.
参数 最后要补充的,就是在可能还在栈里放一个参数来记住
--- 从函数返回的时候,栈指针要指向哪里.
b
---
a