经典递归问题

来源:互联网 发布:java工作流引擎推荐 编辑:程序博客网 时间:2024/06/04 00:30

1.阶乘


#include<stdio.h>int fun(int n){if(n==1)return 1;elsereturn n*fun(n-1);}int main(){int m;m=fun(5);printf("5!=%d\n",m);}

2.求数组中的最小值

#include<stdio.h>int a[10]={17,3,6,77,9,34,29,11,25,100};int findmin(int a[],int n){int m;if(n==0)return a[0];else{m=findmin(a,n-1);if(m>a[n])return a[n];else return m;}}int main(){int min;min=findmin(a,9);printf("minimum value:%d\n",min);}

3.Hanoi(汉诺塔问题)

#include<stdio.h>void Hanoi(int n,char x,char y,char z){if(n==1){printf("盘子%d %c--->%c\n",n,x,z);          //只有一个盘子,直接转移到目标塔z即可}else{Hanoi(n-1,x,z,y);printf("盘子%d %c--->%c\n",n,x,z);         //将n-1个盘子看做一个整体,以塔z(目标塔)为过渡,转移到y(过渡塔)Hanoi(n-1,y,x,z);                          //然后将n-1个盘子从y(过渡塔)转移到z(目标塔)}}int main(){printf("请输入盘子的个数:");int n;scanf("%d",&n);Hanoi(n,'A','B','C');}


0 0