阶乘:
#include <stdio.h>
int fac(int n);
int facn(int n);
int main()
{
int n=0;
int y=0;
printf("input an integer number:");
scanf("%d",&n);
y=fac(n);
printf("%d!等于%d\n",n,y);
y=facn(n);
printf("%d!等于%d\n",n,y);
return 0;
}
int fac(int n)
{
int f=0;
if(n<0)
{
printf("n<0,data error!\n");
}
else if(n==0||n==1)
{
f=1;
}
else
{
f=fac(n-1)*n;
}
return f;
}
int facn(int n)
{
int f=0;
int i=0;
if(n<0)
{
printf("n<0,data error!\n");
}
else if(n==0||n==1)
{
f=1;
}
else
{
f=1;
for(i=2;i<=n;i++)
{
f=f*i;
}
}
return f;
}
斐波那契:
/*
fib:
1 1 2 3 5 8 13 ......
*/
#include <stdio.h>
int fib(int n);
int fibn(int n);
int main()
{
int nNum=0;
printf("请输入fib的第几项:\n");
scanf("%d",&nNum);
int ret=0;
ret=fib(nNum);
printf("ret:%d\n",ret);
ret=fibn(nNum);
printf("ret:%d\n",ret);
return 0;
}
int fib(int n)
{
if(n>2)
{
return fib(n-1)+fib(n-2);
}
else
{
return 1;
}
}
int fibn(int n)
{
int s1=1;//s1是前一项
int s2=1;//s2是后一项
int s=0;
int i=0;
for(i=3;i<=n;i++)
{
s=s1+s2;
s1=s2;
s2=s;
}
return s;
}
最大公约数:
#include <stdio.h>
int gcd(int a,int b)
{
if(a%b==0)
{
return b;
}
else
{
return gcd(b,a%b);
}
}
int gcdn(int a,int b)
{
int tmp=0;
while(b!=0)
{
tmp=a%b;
a=b;
b=tmp;
}
return a;
}
int main()
{
int m=0;
int n=0;
printf("请输入2个整数:\n");
scanf("%d%d",&m,&n);
int ret=0;
ret=gcd(m,n);
printf("ret:%d\n",ret);
ret=gcdn(m,n);
printf("ret:%d\n",ret);
return 0;
}