C语言程序题: 1、编写一个求n!的函数fact(n),要求fact函数分别用递归和非递归两种方法实现 C语言,编写一个求N!的函数FA(n)

\u6c42\u9636\u4e58\u95ee\u9898\u3002\u8981\u6c42\u5b9a\u4e49\u51fd\u6570fact(n)\u8ba1\u7b97n!\uff0c\u4e3b\u51fd\u6570\u4e2d\u8f93\u5165\u4e00\u4e2a\u6b63\u6574\u6570n\uff0c\u8f93\u51fan!\u8981\u6c42\u51fd\u6570fact(n)\u5206\u522b\u91c7\u7528\u9012\u5f52\u2026

#include "stdio.h"
int fact1(int n)
{
if(n==1||n==0) return 1;
else return n*fact1(n-1);
}
int fact2(int n)
{
int i,t=1;
for(i=1;i<=n;i++)
t*=i;
return t;
}
void main()
{
int n;
scanf("%d",&n);
printf("fact1(n)=%d\n",fact1(n));
printf("fact2(n)=%d\n",fact2(n));
}

#define RECURSION
#include"stdio.h"
#ifdef RECURSION
long int fact(int n)
{
long int y;
if(n==1)
y=1;
else
y=n*fact(n-1);
return y;
}
#else
long int fact(int n)
{
int i;
long int y=0;
for(i=1;i<=n;i++)
{
y=y*i;
}
return y;
}
#endif
main()
{
int i;
long int y=0;
for(i=1;i<=10;i++)
{
y=y+fact(i);
}
printf("10!=%ld\n",y);
getch();
}
\u6ce8\u610f\u5982\u679c\u5c06#define RECURSION \u5220\u9664\uff0c\u5219\u7f16\u8bd1\u7684\u662f\u975e\u9012\u5f52fact\uff08\uff09\u3002\u3002\u4e0d\u4fe1\u53ef\u4ee5\u518d\u4e24\u4e2a\u51fd\u6570\u4e2d\u52a0\u4e2a\u8f93\u51fa\u8bed\u53e5\u3002\u3002\u3002

1。

#include "stdio.h"

//#define RECURSION 1

#ifdef RECURSION
long fact(int n)
{
if(n<1) return 1;
return n*fact(n-1);
}

#else
long fact(int n)
{
long t=1;
for(int i=2;i<=n;i++)
t*=i;
return t;
}

#endif

main()
{
long s=0;
for(int i=1;i<=10;i++)
s+=fact(i);
printf("%ld\n",s);
}

2。

#include "stdio.h"

bool prime(int n)
{
if(n==1) return false;
for(int i=2;i<=n/2;i++)
if(n%i==0) return false;
return true;
}

main()
{
int cnt=0;
int i=3;
while(cnt<10)
{
if(prime(i) && prime(i+2))
{
printf("(%d,%d)\n",i,i+2);
cnt++;
}
i+=2;
}
}

3。

非递归
#include "stdio.h"

void main()
{
int s=0,total=0;
int day=0;
while(s<100)
{
if(day%2==0)
{
s+=3;
total+=3;
}
else
{
s-=2;
total+=2;
}
day++;
}
if(s>100) total-=(s-100);
printf("total %d days,climb %d metres\n",day,total);
}

递归
#include "stdio.h"

struct node{
int day;
int total;
};

struct node f(int dest,int tag)
{
if(tag==0)
{
if(dest<=3)
{
struct node temp;
temp.day=1;
temp.total=dest;
return temp;
}
else
{
struct node temp,temp1;
temp1=f(dest-3,1);
temp.day=temp1.day+1;
temp.total=temp1.total+3;
return temp;
}
}
else
{
struct node temp,temp1;
temp1=f(dest+2,0);
temp.day=temp1.day+1;
temp.total=temp1.total+2;
return temp;
}
}

void main()
{
struct node a=f(100,0);
printf("total %d days,climb %d metres\n",a.day,a.total);
}

汗,教科书上都有,自己看去

扩展阅读:扫一扫出答案 ... c++简单程序实例 ... 初学编程必背50个 ... c++入门程序代码 ... c#考试题库 ... c++编程 ... 编程必背100个代码 ... c语言必背100代码 ... c语言编一个最简单的程序 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网