美文网首页十天学会C语言程序员
C语言day05-10递归练习02

C语言day05-10递归练习02

作者: liyuhong165 | 来源:发表于2016-04-30 11:51 被阅读61次

pragma mark 递归练习02

pragma mark 概念

/**
 *  阶乘公式 
    n! = n * (n-1)! ;
 */

pragma mark 代码

#include <stdio.h>
int factorial(int n);
int main()
{
    // 用递归法求N的阶乘
    /*
     ! 阶乘
     4! == 4 * 3 * 2 * 1
     4! == 4 * 3!                    3! = 3 * 2 * 1
     4! == 4 * 3 * 2!                2! = 2 * 1
     4! == 4 * 3 * 2 * 1!            1! = 1
     
     4! == 4 * 3 * 2 * 1
     4! == 4 * 3!
     3! == 3 * 2!
     2! == 2 * 1!
     1! == 1
     n! = n * (n - 1)!;
     
     */
    
    int a = 3;
    int result = factorial(a);
    printf("result = %i\n",result);
    return 0;
}


int factorial(int n)    // 3 2 1
{
    // 结束条件
//    int result = 1;
    if (n == 1) {
        // 1 返回到公式 2 * factorial(2-1) 里面
        return 1;
    }
    else
    {
//      return 3 * factorial(3-1); == return 3 * 2; // 最后将结果返回到最开始调用的地方
//      return 2 * factorial(2-1); == return 2 * 1;
        
        
        return n * factorial(n - 1);
    }
}

pragma mark 递归练习03

pragma mark 概念

pragma mark 代码

#include <stdio.h>
int age(int n);
int main()
{
    /*
     有5个人坐在一起,问第5个人多少岁?
     他说比第四个人大两岁。问 第4个人岁数,他说比第三个人大两岁,问第3个人,又说比第2个人大两岁。问第2个人,就说比第1个人。最后问第1个人,他说10岁。请问第5个人多大?
     
     第一个人得岁数 == 10
     第二个人的岁数 == 第一个人 + 2    // 12
     第三个人的岁数 == 第二个人 + 2    // 14
     第四个人的岁数 == 第三个人 + 2    // 16
     第五个人的岁数 == 第四个人 + 2    // 18

     已知第一个人得年龄,和每个人之间的年龄差,求第n个人的年龄
     age(1) = 10
     age(2) = age (1) + 2
     age(3) = age (2) + 2
     age(4) = age (3) + 2
     
     age(n) = age(n-1) +2
     */
    
    int result = age(3);
    printf("result = %i\n",result);
    
    return 0;
}

int age(int n)  // 3
{
    if (n == 1) {
        return 10;  // 第一个人的年龄  🔽
    }
    else
    {
        // return age(3 - 1) + 2;   == 12 + 2;
        // return age(2 - 1) + 2;   == 10 + 2;
        return age(n -1) + 2;
    }
}

相关文章

  • C语言day05-10递归练习02

    pragma mark 递归练习02 pragma mark 概念 pragma mark 代码 pragma m...

  • C语言基础教程之递归

    一文读懂C语言递归算法,C语言基础教程之递归 C语言递归 递归指的是在函数的定义中使用函数自身的方法。 从前有座山...

  • 总结:大学老师上课你是否在听,出来找工作你是否学会了老师所教的.

    十天学会C语言(上) day1 C语言day01-01第一个C语言C语言day01-02练习C语言day01-03...

  • C语言----递归

    递归指的是在函数的定义中使用函数自身的方法。 举个例子:从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事...

  • C语言 递归

    C允许函数调用自己,该调用过程称为递归。 main()调用了带参数1的up_and_down()函数,以此类推#1...

  • Rust语言编程实例100题-028

    Rust语言编程实例100题-028 题目:递归练习。程序调用自身的编程技巧称为递归( recursion)。递归...

  • Rust语言编程实例100题-026

    Rust语言编程实例100题-026 题目:递归练习。程序调用自身的编程技巧称为递归( recursion)。递归...

  • Rust语言编程实例100题-027

    Rust语言编程实例100题-027 题目:递归练习。程序调用自身的编程技巧称为递归( recursion)。递归...

  • C语言100例

    C 练习实例01C 练习实例02C 练习实例03C 练习实例04C 练习实例05C 练习实例06 C 练习实例07...

  • C语言——递归与尾递归

    在计算机科学领域中,递归式通过递归函数来实现的。程序调用自身的编程技巧称为递归( recursion)。 一个过程...

网友评论

    本文标题:C语言day05-10递归练习02

    本文链接:https://www.haomeiwen.com/subject/gzjkrttx.html