n阶乘的非递归算法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了n阶乘的非递归算法相关的知识,希望对你有一定的参考价值。

最近小弟在看算法设计书时,讲到递归算法时,里面有一节时讲递归转化位非递归算法。小弟就想实践一下:将n阶乘的递归算法转化成非递归算法,但是小弟水平实在是、、、改了半天都没改出来,因此请网络上的各位高手,可否指点一二,小弟讲不胜感激!

参考技术A #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的阶乘
参考技术B int temp=1;
while(n<=1)

temp=temp*n;
n--;
参考技术C #include<stdio.h>
int main()

int n,i,s;
while(scanf("%d",&n)==1)

if(n==0)

puts("0");
continue;

s=1;
for(i=1;i<=n;i++)
s*=i;
printf("%d\n",s);

return 0;
本回答被提问者采纳
参考技术D 一楼修改版:
#include<stdio.h>
int main()

int n,i,s;
while(scanf("%d",&n)==1)

if(n==0)

puts("1");
continue;

for(s=1,i=1;i<=n;s*=i++);
printf("%d\n",s);

return 0;

以上是关于n阶乘的非递归算法的主要内容,如果未能解决你的问题,请参考以下文章

非递归的o(n)的求n个数里面第k大数的算法

汉诺塔的非递归算法

数据结构算法--栈与队列

归并排序 的非递归算法

全排列的非递归算法

Java算法 选择排序算法 -- 选择排序算法的非递归和递归形式实现