怎么用递归函数算阶乘?

2024-11-26 23:34:53
推荐回答(5个)
回答1:

代码如下:

vim test.sh

#!/bin/bash

read -p "Num:" num   #read 函数读取手动输入一个数值

result=1              #首先定义一个变量值为1

for i in `seq $num`   #i在num 中从小到大依次取值

do

 result=$[ $result * $i ]

done

echo "The result is: $result"


扩展资料

递归函数的作用和循环的方法效果一样,即递归函数本质上是一个方法的循环调用,注意:有可能会出现死循环。因此,使用递归函数时,一定要定义递归的边界(即什么时候退出循环)。

来计算阶乘n! = 1 x 2 x 3 x ... x n,用函数fact(n)表示,可以看出:

fact(n) = n! = 1 x 2 x 3 x ... x (n-1) x n = (n-1)! x n = fact(n-1) x n

所以,fact(n)可以表示为n x fact(n-1),只有n=1时需要特殊处理。

于是,fact(n)用递归的方式写出来就是:

def fact(n):

if n==1:        return 1

return n * fact(n - 1)

参考资料来源:

百度百科——递归函数

回答2:

int jiecheng(int n)
{
if(n==1) //当n等于1时,直接返回。
return 1;
else //否则,返回n*jiecheng(n-1)
return n*jiecheng(n-1);
}
例如:n=3,运行过程如下:
调用 返回
主函数 6
↓ ↑
jiecheng(3) 3*jiecheng(2)=3*2*jiecheng(1)=3*2*1
↓ ↑
jiecheng(2) 2*jiecheng(1)=2*1
↓ ↑
jiecheng(1) → 1

回答3:

float jiecheng(int n);

int main()
{
int a=1;
while(2)
{
if(a==0)break;
printf("\nenter a number:\n");
scanf("%d",&a);
printf("%d!=%0.0f",a,jiecheng(a));
}
return 0;
}

float jiecheng(int n)
{
if(n<=1) {return 1.0;}
else
{
return (jiecheng(n-1)*n);
}
}

就这样,你试试吧。

回答4:

else{
jiecheng(n)=n*jiecheng(n-1);// n的阶乘等于n乘以n-1的阶乘.
}

回答5:

在C++的math.h函数库里,有一个pow(x,y)的函数,可以返回X的Y次方!