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

递归算法求n

发布时间: 2022-06-29 07:03:01

1. c语言用递归法计算n

longff(intn)//函数作用是计算N的阶乘
{
longf;
if(n<0)printf("n<0,inputerror");//n不能为负数
elseif(n==0||n==1)f=1;//这里使ff(0)和ff(1)等于1
elsef=ff(n-1)*n;//这里使ff(n)=n*ff(n-1),重要,因为当形参n=n-1时,ff(n-1)=ff(n-2)*(n-1),所以这一步实际实现了n阶乘计算,即ff(n)=n*ff(n-1)=n*(n-1)*ff(n-2).....*ff(1)*ff(0),因为ff(0)==ff(1)==1.所以ff(n)=n!实现。
return(f);
}

2. 请问如何通过递归法求N个整数的和在线等,谢谢!!

#include <stdio.h>
void main()
{
int sum(int);
int n;
printf("请输入任意个数值:\n");
scanf("%d",&n);
printf("这%d个数值的和是%d\n",n,sum(n));
}
int sum(int n)
{
if(n==1) return 1;
else return n+sum(n-1);
}

3. 利用递归算法求n!

1、先采用冒泡法对数组P(N)进行升序排列.
For I = 1 To N - 1
JHBZ = 0 '数据是否交换的标志,凡发生交换就置JHBZ=1,否则为0.
For J = 1 To N - I
If P(J) > P(J + 1) Then
T = P(J)
P(J) = P(J + 1)
P(J + 1) = T
JHBZ = 1
End If
Next J
If JHBZ = 0 Then Exit For
Next I

2、数组P(N)的最后一个元素就是我们所求的最大元素。

4. 求阶乘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
*/

【递归算法的原理】

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

5. 用递归方法求n!,程序如下:求每一句程序的说明,谢谢!

主函数就不用说了吧,就是让你输入一个数字然后调用fac方法,最后输出结果。
所谓递归函数,就是函数自身不断的调用自己,在某个条件成立的时候跳出。一般都是以计算阶乘作为例子,你这个程序实现的也是计算阶乘的功能。
if(n<0)
{
printf(“n<0,dataerror!”);
}
以上这句基本没用,就是对你所输入的数字进行判断,要求你所输入的数字大于0才计算阶乘,也就是才执行下面的部分。
else
if(n= =0| |n= =1)
f=1;
这里很重要,是递归函数退出的条件。
else
f=fac(n-1)*n;
这里就是所谓的自己调用自己 fac(n-1)是调用自己,*n是为了计算f的值。
我们假设你在主函数里面输入3,即y=fac(3);
那么fac函数执行如下:
n=3时进入函数,f=fac(2)*3;此时程序会进入fac(2),传入的参数n变成了2,
但是并不执行return(f),return(f)要等fac(2)执行完成之后才能执行。
fac(2)中f=fac(2-1)*2,即f=fac(1)*2,此时程序会进入fac(1),传入的参数n变成了1,
但是并不执行return(f),return(f)要等fac(1)执行完成之后才能执行。
fac(1)中,符合 if(n= =0| |n= =1),所以f=1.
fac(1)将结果f return给fac(2),fac(2)中的f=1*2=2;
fac(2)再将自己的f return给fac(3),fac(3)中的f=2*3=6;
这样y=fac(3)=6.
这个过程说起来很麻烦,可能我表达的也不是很清楚,你也很难理解。
建议你自己把这个程序加断点跟进,一步一步看一下程序的执行过程。
调试是学程序的最好方法

6. c语言算n的阶乘的递归算法

思路:递归求阶乘函数,如果输入的参数等于1则返回1,否则返回n乘以该函数下次递归。

参考代码:

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

7. python用递归方法求n!

python使用递归求方法求解n的阶乘
n = int(input("请输入一个数字:\n"))
def demo(n):
sum = 0
if n == 0:
sum = 1
else:
sum = n * demo(n - 1)
return sum

print("%d 的阶乘为 %d"%(n,demo(n)))

8. 用递归方法求n! 下面递归函数的编写有错,改正。

#include<stdio.h>
float fac(int n)//声的时候加变量名,不然你下面的n哪里来的啊?
{
float f;
if (n<0)
{
printf("n<0, dataerror!");//双引号要用英文的
}
else if(n==0||n==1)
f=1;
else
f=fac(n-1)*n;//是n-1,n要越来越小才行啊,要不然的话你哪有机会到0,1那里去啊?
return f;
}
int main()
{
int n;
scanf("%d",&n);
printf("%.0f\n",fac(n));
return 0;
}

9. 由递归方式求的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次阶乘函数。

(9)递归算法求n扩展阅读:

注意事项:

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

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

10. c语言编程:用递归实现计算n!。

由于对于任意的n,

n! = (n-1)! * n;

即令f(n) = n!,存在公式

f(n) = f(n-1) * n;

在这个递归公式下,编写递归求阶乘代码如下:

intfac(intn)
{
if(n==0||n==1)return1;
returnfac(n-1)*n;
}
热点内容
编程图片平移 发布:2024-11-16 07:41:06 浏览:652
黄金数算法 发布:2024-11-16 07:40:15 浏览:65
门锁动态密码是什么样的 发布:2024-11-16 07:39:33 浏览:912
namespacelinux 发布:2024-11-16 07:28:13 浏览:352
html去缓存 发布:2024-11-16 07:05:22 浏览:723
如何限制苹果ip段访问服务器 发布:2024-11-16 07:02:57 浏览:661
knn算法原理 发布:2024-11-16 06:56:18 浏览:854
c语言第一章 发布:2024-11-16 06:49:07 浏览:51
服务器ip黑名单和网站ip黑名单区别 发布:2024-11-16 06:45:56 浏览:888
上传图片命名规则 发布:2024-11-16 06:28:37 浏览:557