• 递归


     

    函数递归:一个函数直接或者间接在函数内调用自己,称这个函数是递归定义的;

    //n! = n*(n-1)!

    //5! = 5*4!

    //4! = 4*3!

    //3! = 3*2!

    //2! = 2*1!

    //1! = 1;  //base case

    //递归通常分为三个阶段: 递归前进段,递归边界条件,递归后退段

    //long func(int n)//

    //{

    //    if (n==1) {//递归退出条件

    //        return 1;

    //    }

    //    return n*func(n-1);

    //}

    //

    //int main(int argc, const char * argv[]) {

    //    

    //    printf("%ld ", func(12));

    //    

    //    return 0;

    //}

    //斐波那契数列

    //1 1 2 3 5 8 13 21 34 55 89 144 ....

    //int feibonaqi(int n)

    //{

    //    if (n==1 || n==2) {

    //        return 1;

    //    }

    //    return feibonaqi(n-1)+feibonaqi(n-2);

    //}

    //

    //int main(int argc,const char *argv[])

    //{

    //    for (int i=1; i<=40; i++) {

    //        printf("%d ", feibonaqi(i));

    //    }

    //    printf(" ");

    //    return 0;

    //}

    //1、编写递归函数求两个正整数a和b的最大公约数(GCD,Greatest Common Divisor),使用Euclid算法:

    //

    //如果a除以b能整除,则最大公约数是b。

    //

    //否则,最大公约数等于b和a%b的最大公约数。

    //

    //Euclid算法是很容易证明的,请读者自己证明一下为什么这么算就能算出最大公约数。最后,修改你的程序使之适用于所有整数,而不仅仅是正整数。

    //int euclid(int a, int b)

    //{

    //    if (!(a%b)) {

    //        return b;

    //    }

    //    return euclid(b, a%b);

    //}

    //

    //int main(int argc,const char *argv[])

    //{

    //

    //    printf("%d ", euclid(319, 377));

    //    return 0;

    //}

    //2、  趣味问题——年龄。有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?用递归算法实现。

    int age(int n)

    {

        if (n==1) {

            return 10;

        }

        return age(n-1)+2;

    }

    int main(int argc, const char *argv[])

    {

        printf("age = %d ", age(6));

        return 0;

    }

    让明天,不后悔今天的所作所为
  • 相关阅读:
    重要的环境变量
    常用的转义字符
    常用系统工作命令
    栈 队列 和 双向队列
    时间
    默认值字典
    Counter
    random
    22 内置常用模块01
    super
  • 原文地址:https://www.cnblogs.com/-yun/p/4256770.html
Copyright © 2020-2023  润新知