• 函数递归


    //
    //  main.c
    //  函数递归
    //
    //  Created by zhangxueming on 15/6/2.
    //  Copyright (c) 2015年 zhangxueming. All rights reserved.
    //
    
    #include <stdio.h>
    //n! = n*(n-1)!
    //(n-1)!=(n-1)*(n-2)!
    //1!=1; 0!=1
    
    //函数递归: 一个函数直接或者的调用它自己, 称这个函数是递归定义的
    //递归前进段  递归边界 递归后退段
    //递归缺点: 占用内存空间大, 执行效率低
    
    //5!
    //func(5)
    //5*func(4)
    //4*func(3)
    //3*func(2)
    //2*func(1)
    
    int func(int n)
    {
        if (n==1||n==0) {
            return 1;
        }
        return n*func(n-1);
    }
    
    //1、斐波那契数列
    //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);
    }
    
    //2、编写递归函数求两个正整数a和b的最大公约数(GCD,Greatest Common Divisor),使用Euclid算法:
    //
    //如果a除以b能整除,则最大公约数是b。
    //
    //否则,最大公约数等于b和a%b的最大公约数。
    //
    //Euclid算法是很容易证明的,请读者自己证明一下为什么这么算就能算出最大公约数。最后,修改你的程序使之适用于所有整数,而不仅仅是正整数。
    
    int euclid(int a, int b)
    {
        if (a%b==0) {
            return b;
        }
        return euclid(b,a%b);
    }
    
    
    //3、趣味问题——年龄。有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("%d
    ", func(5));
        
    //    for (int i=1; i<=35; i++) {
    //        printf("%d ",feibonaqi(i));
    //    }
    //    printf("
    ");
        
        //printf("最大公约数 = %d
    ", euclid(319,377));
        
        printf("age = %d
    ", age(5));
        return 0;
    }
  • 相关阅读:
    (转)JAVA国际化
    (转)实现这两个接口ModelDriven<T>,Preparable有什么用?
    cordova 与 phonegap关系
    NApache+JBOSS架构方案
    (转)Java 标注(Annotation)详解
    Jboss集群(五)--F5硬件负载均衡器双击热备 + Jboss集群终极实现
    GTK+/GNOME编程(一)
    二维数组中查找指定的数
    计算字符串距离
    统计指定数字的个数,并将其按权值10的次方数相加
  • 原文地址:https://www.cnblogs.com/0515offer/p/4547162.html
Copyright © 2020-2023  润新知