对递归的理解

来源:互联网 发布:常见面试几种算法 编辑:程序博客网 时间:2024/05/16 15:17

递归是一个特殊的循环,程序模仿一个甜甜圈,程序在设定的条件下跳入下一层循环。

当一个c程序运行的时候在主方法里面的表达式必须运行完毕,递归的时候,程序一般是只运行了前面的一部分就跳入到下一层循环了,所以当程序从最底层返回的时候,必须运行完程序剩余的部分,所以如果程序没有设定递归跳出的条件的话,程序会陷入死循环状态,

程序跳入下一个循环的时候,会有一个断口,断口记录了方法传进来的参数,所以当下层返回的时候,将带着断口保留的参数一直执行剩下的程序 ,执行完毕后继续返回上一层。


/**
 *xms 2015-4-25
 **函数递归测试算法
 **/
void f(int n){
    if(n)
    f(n/8);
    printf("the result of f(n) is %d\n",n%8);
}
/**
 *xms 2015-4-25
 **/

f(123) 输出 0 1 7 3

0 0