C语言使用非递归和递归函数分别实现阶乘,斐波那契,最大公约数
2016-06-23 21:34
477 查看
阶乘:
#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;
}
#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;
}
相关文章推荐
- 如何组织构建多文件 C 语言程序(二)
- 如何写好 C main 函数
- Mootools 1.2教程 函数
- autoit InputBox 函数
- 文件遍历排序函数
- 关于C#中排序函数的总结
- Oracle 函数大全[字符串函数,数学函数,日期函数]第1/4页
- ASP下经常用的字符串等函数参考资料
- PostgreSQL教程(五):函数和操作符详解(1)
- DOS批处理 函数定义与用法
- asp Chr 函数 数字转字母的方法
- Lua中的函数精讲笔记
- Lua中的闭合函数、非全局函数与函数的尾调用详解
- Lua中调用C++函数示例
- Lua和C语言的交互详解
- Lua实现split函数
- Lua常用时间函数使用实例
- Lua函数与字符串处理简明总结
- Lua学习笔记之表和函数
- Lua中实现sleep函数功能的4种方法