代码如下:
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)
参考资料来源:
百度百科——递归函数
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
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);
}
}
就这样,你试试吧。
else{
jiecheng(n)=n*jiecheng(n-1);// n的阶乘等于n乘以n-1的阶乘.
}
在C++的math.h函数库里,有一个pow(x,y)的函数,可以返回X的Y次方!