zoukankan      html  css  js  c++  java
  • 函数的递归调用例子学习

    • 计算第五个人年纪和5!的例子:

      

     1 #include <stdio.h>
     2 
     3 int main()
     4 {
     5 
     6     int age(int n);
     7     int jiecheng(int n);
     8 
     9     printf("five the age is : %d.
    ", age(5));
    10     printf("!5 is : %d.
    ", jiecheng(5));
    11 
    12     return 0;
    13 }
    14 
    15 int age(int n)
    16 {
    17     int c;
    18     if (1 == n)
    19         c = 10;
    20     else
    21         c = age(n-1) + 2;
    22 
    23     return c;
    24 }
    25 
    26 int jiecheng(int n)
    27 {
    28     /* n == 1;  1! = 1;
    29      * n > 1;   n! = n * (n - 1)!;
    30      */
    31 
    32     int a;
    33     if (n < 0)
    34     {
    35         printf("input is error.
    ");
    36         return 0;
    37     }
    38     if ((1 == n) || (0 == n))
    39         a = 1;
    40     else 
    41         a = n * jiecheng(n - 1);
    42 
    43     return a;
    44 }
    • 汉诺塔的步骤

      

     1 #include <stdio.h>
     2 void hanoi(int n, char A, char B, char C);
     3 void move(char M, char N);
     4 
     5 int main()
     6 {
     7     hanoi(3, 'A', 'B', 'C');
     8     return 0;
     9 }
    10 
    11 /*
    12  * 分3个步骤:
    13  * 1, 将A上面的n-1个盘借C移动到B上
    14  * 2, 将A上最大那个盘移动到C上
    15  * 3, 将B上n-1个盘借A移动到C上
    16  */
    17 
    18 void hanoi(int n, char A, char B, char C)
    19 {
    20     if (1 == n) //当只有一个盘子的时候 n ==1 , 这时候直接移动就可以了
    21         move(A, C);
    22     else  // 当A上的盘多于1个的时候,要分3个步骤来移动。
    23     {
    24         hanoi(n-1, A, C, B);
    25         move(A, C);
    26         hanoi(n-1, B, A, C);
    27     }
    28 
    29 
    30     return;
    31 }
    32 
    33 // 移动的具体实现方法
    34 void move(char M, char N)
    35 {
    36     printf("%c->%c.
    ", M, N);
    37     return;
    38 }

       运行结果:

       

    liweilijiedeMacBook-Pro:programs liweilijie$ ./hanoi 
    A->C.
    A->B.
    C->B.
    A->C.
    B->A.
    B->C.
    A->C.
    liweilijiedeMacBook-Pro:programs liweilijie$ 
  • 相关阅读:
    乌龟git
    CI的model层的操作
    排序算法
    linux安装教程
    linux命令Netstat
    linux压缩和解压缩
    标准库模块time,datetime
    为什么计算机时间和众多编程语言要从1970年1月1日开始算起
    模块和包的导入
    Python封装应用程序的最佳项目结构是什么?
  • 原文地址:https://www.cnblogs.com/liweilijie/p/4807574.html
Copyright © 2011-2022 走看看