1.辗转相除法求最大公约数
#include <stdio.h> int gcd(int m,int n); int main(void) { int m,n,t; scanf("%d %d",&m,&n); if(m>n) { t=m; m=n; n=t; } n=gcd(m,n); printf("%d",n); return 0; } int gcd(int m,int n) { int r; r=m%n; if(r==0) {return n;} else { gcd(n,r); } }
2.小数阶乘
#include <stdio.h> int factrial(int a) { int product=1; if (a==1) { return product; } else { product=a*factrial(a-1); } } int main(int argc, char const *argv[]) { printf("%d\n",factrial(3)); return 0; }
3.汉诺塔问题
#include <stdio.h> int count; void hanoi(int n,char a,char b,char c); int main(void) { int n; char a='A',b='B',c='C'; printf("请输入汉诺塔层数\n"); scanf("%d",&n); hanoi(n,a,b,c); return 0; } void hanoi(int n,char a,char b,char c) { if(n==1) { printf("第%d次移动:%c->%c\n",++count,a,c); } else { hanoi(n-1,a,c,b); printf("第%d次移动:%c->%c\n",++count,a,c); hanoi(n-1,b,a,c); } }
4.斐波那契数列
#include <stdio.h> int fibo(int a); int main(void) { int a; printf("请输入月份\n"); scanf("%d",&a); printf("%d\n",fibo(a)); return 0; } int fibo(int a) { if(a==0) { return 0; } else if(a==1) { return 1; } else { return fibo(a-1)+fibo(a-2); } }