当前位置:首页 » 操作系统 » 阶乘递归算法

阶乘递归算法

发布时间: 2022-01-11 13:48:25

⑴ n阶乘的非递归算法

#include <stdio.h>

int f(int n)//n的阶乘
{
int res=1;
int i;
for(i=1;i<=n;i++)
res*=i;
return res;
}
int main()
{
int n=6;
int no=f(n);
printf("%d\n",no);
return 0;
}
如上n=6;6的阶乘

c语言递归求阶乘

举例:用递归方法求n;

#include<stdio.h>

int main()

{

int n;

int y;

printf("input a integer number:");

scanf("%d",&n);

y=fac(n);

printf("%d!=%d ",n,y);

return 0;

}

int fac(int n)

{

int f;

if(n<0)

printf("n<0,data error!");

else if(n==0||n==1)

f=1;

else

f=fac(n-1)*n;

return(f);

}

(2)阶乘递归算法扩展阅读:

return用法:

return返回一个数值的意思就是把return&lt;表达式&gt;后面表达式的值返回给调用他的函数。举个例子:

int sum(int i,int j)

{

return i+j;

printf("这个语句不会被执行,因为该子函数执行到上面的return语句就无条件结束了");

}

main()

{

int a=10,b=11,c;

c=sum(a,b);

printf("%d",c);

}

程序的输出为:

21

这个21从何而来呢main函数调用sum(a,b)函数时将a的值赋给i,b的值赋给j,上面说了return i+j;会计算i+j的值也就是结果等于21,并将21带回给调用它的函数,即c=sum(a,b);相当于c=21,这个21就是由sum(a,b)中的return反回来的。

⑶ 求阶乘n!的递归算法

#include<stdio.h>
int fun(int n)
{
if(n==1||n==0) return 1;//如果参数是0或者1返回1
return n*fun(n-1);//否则返回n和下次递归的积
}
int main()
{
int n;
scanf("%d",&n);
printf("%d\n",fun(n));
return 0;
}
/*
5
120
*/

【递归算法的原理】

递归是计算机科学的一个重要概念,递归的方法是程序设计中有效的方法,采用递归编写
递归能使程序变得简洁和清晰。

⑷ 哪位大神能用c语言递归算法计算n的阶乘*(n-1) 的阶乘

代码如下:

//#include"stdafx.h"//Ifthevc++6.0,withthisline.
#include"stdio.h"
unsignedmyfact(intn){
if(n==1||n==0)
return1;
returnn*myfact(n-1);
}
intmain(void){
intn;
unsignedx;
while(1){
printf("Inputn(int0<=n<n<9) n=");//限制到8为不溢出
if(scanf("%d",&n),n>=0&&n<=8)
break;
printf("Overrun,enteragain:");
}
printf("%d!x%d!=%d ",n,n-1,(x=myfact(n-1))*n*x);
return0;
}

⑸ 用java递归算法求一个数字的阶乘

用递归算法求一个数字的阶乘的程序如下:
public class JieCheng {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("请输入一个整数:");
int n = in.nextInt();
System.out.println(n+"!="+f(n));
}
static long f(int n){
if (n==1) return 1;
else return n*f(n-1);
}
}
运行结果:
请输入一个整数:6
6!=720

⑹ 用递归的方法计算,计算正整数5的阶乘

#include "stdio.h"
int prime(int n)
{
if(n>1)
return n*prime(n-1);
else
return 1;
}
int main()
{
int o;
for(o=1;o<=10;o++)
printf("%d!=%d ",o,prime(o));
}

⑺ C语言递归 计算阶乘

#include <stdio.h>
void f(int);
main()
{
int n;
unsigned long fac;
scanf("%d", &n);
fac=f(n);
if(fac)
printf("%d",fac);
}
void f(int n)
{
if(n<=0||n>10)
{
printf("error");
return 0;
}
else if(n==1) return 1;
else return n*f(n-1);
}

⑻ 由递归方式求的N的阶乘(即N,),时间复杂度是多少

每次递归内部计算时间是常数,故O(n)。

用递归方法计算阶乘,函数表达式为f(n)=1 若n=0 f(n)=n*f(n-1),若n>0,如果n=0,就调用1次阶乘函数,如果n=1,就调用2次阶乘函数,如果n=2,就调用3次阶乘函数,如果n=3,就调用4次阶乘函数。

(8)阶乘递归算法扩展阅读:

注意事项:

利用递归树方法求算法复杂度,其实是提供了一个好的猜测,简单而直观。在递归树中每一个结点表示一个单一问题的代价,子问题对应某次递归函数调用,将树中每层中的代价求和,得到每层代价,然后将所有层的代价求和,得到所有层次的递归调用总代价。

递归树最适合用来生成好的猜测,然后可用代入法来验证猜测是否正确。当使用递归树来生成好的猜测时,常常要忍受一点儿不精确,因为关注的是如何寻找解的一个上界。

⑼ 在java中,用递归方法计算n的阶乘。

用Java求键盘输入的数的阶乘n。(递归算法)packagejiecheng; importjava.util.*; //导入java.util包中的所有类classrep{ publiclongrep(intn){ longi=0; if(n==0||n==1) i=1;

elsi=n*rep(n-1) returni; } } publicclassJie{ publicstaticvoidmain(String[]args){ intn; //此处定义要输入的数Scanners= newScanner(System.in); //以下三行用于n的值得输入System.out.print( "请输入一个整数:"); n=s.nextInt(); repf= newrep(); System.out.println(n+"!="+f.rep(n)); } }

⑽ C语言怎么用递归法求阶乘

1、首先打开vc6.0,新建一个vc项目。

热点内容
python3默认安装路径 发布:2024-09-19 08:50:22 浏览:514
环卫视频拍摄脚本 发布:2024-09-19 08:35:44 浏览:416
sqlserveronlinux 发布:2024-09-19 08:16:54 浏览:255
编程常数 发布:2024-09-19 08:06:36 浏览:951
甘肃高性能边缘计算服务器云空间 发布:2024-09-19 08:06:26 浏览:161
win7家庭版ftp 发布:2024-09-19 07:59:06 浏览:716
数据库的优化都有哪些方法 发布:2024-09-19 07:44:43 浏览:268
知乎华为编译器有用吗 发布:2024-09-19 07:32:20 浏览:617
访问虚拟机磁盘 发布:2024-09-19 07:28:13 浏览:668
原地工作算法 发布:2024-09-19 07:28:07 浏览:423