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);
}
}
5、共有十阶楼梯,小张每次只能走一阶或两阶,共有多少种方法走完此楼梯
#include <stdio.h>
int fun(int n)
{
if(n==1)
return 1;
if(n==2)
return 2;
else
{
return fun(n-1)+fun(n-2);
}
}
int main(void)
{
int (*p)(int)=fun;
printf("%d\n",p(10));
return 0;
}
6.递归方法十进制转化二进制
#include <stdio.h>
void shi_er(unsigned long n)
{
int r;
r=n%2;
if(n>=2)
{
shi_er(n/2);
}
putchar(r==0?'0':'1');
}
int main(void)
{
shi_er(10);
return 0;
}