递归

汉诺塔

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 
 4 void hannuota(int n,char A,char B,char C)
 5 {
 6     /*如果是1一个盘子
 7         直接将A柱子上的一个盘子从A移到C
 8       否则
 9         先将A柱子上的n-1个盘子借助C移到B
10         直接将A柱子上的盘子从A移到C
11         最后将B柱子上的n-1个盘子借助A移到C
12     */
13     if(n == 1)
14     {
15         printf("将编号为%d的盘子直接从%c柱子移动到%c的柱子
",n,A,C);
16     }
17     else
18     {
19         hannuota(n-1,A,C,B);   //将n-1个盘从A借助C移到B
20         printf("将编号为%d的盘子直接从%c柱子移动到%c的柱子
",n,A,C);
21         hannuota(n-1,B,A,C);   //将n-1个盘从B盘借助A移动到C
22     }
23 }
24 
25 int main()
26 {
27     int n;
28     char ch1='A';
29     char ch2='B';
30     char ch3='C';
31     printf("请输入汉诺塔的个数:");
32     scanf("%d",&n);
33 
34     hannuota(n,ch1,ch2,ch3);
35 
36     return 0;
37 }

阶乘

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 
 4 void f(int n)
 5 {
 6       if(n == 1)
 7       {
 8             return 1;
 9       } 
10       else
11      {
12             return f(n-1)*n;
13      }
14 }
15 
16 int main()
17 {
18       int n;
19       printf("%d"的阶乘是%d,f(3));
20       return 0;
21 }
原文地址:https://www.cnblogs.com/aipeicai/p/12222332.html