分析
这是一道典型的递归问题,涉及到了调用栈和栈帧的知识。该函数里我把方法设为 printNum。简单来说,每一次的方法调用就称为一个栈帧。
1、资料部分
–>> 什么是栈帧呢?
栈帧(Stack Frame)每一次函数的调用,都会在调用栈(call stack)上维护一个独立的栈帧(stack frame).每个独立的栈帧一般包括:
- 函数的返回地址和参数
- 临时变量: 包括函数的非静态局部变量以及编译器自动生成的其他临时变量
- 函数调用的上下文
在函数调用的过程中,有函数的调用者(caller)和被调用的函数(callee).
调用者需要知道被调用者函数返回值;
被调用者需要知道传入的参数和返回的地址;
来自简书:栈帧 (Stack Frame) 作者:一铭_
https://www.jianshu.com/p/b666213cdd8a
2、理解部分
例如数字1234,要想依次打印出1 2 3 4,则必须用除以 ( / ) 10的方法,来先把除下来得到的结果放入“栈”里,这是 “递” 的过程;当( num > 9)不再成立时,此时num = 1,然后再用模 ( % ) 10的方法,得到数字的每一位,这是 “归” 的过程。两者一结合,便是这道题递归的逻辑理解。
回归正题
1、以下为我自己的理解