用递归方式求出阶乘的值。递归的方式为: 5!=4!*5 4!=3!*4 3!=2!*3 2!=1!*2 1!=1 即要求出5!先求出4!。。

要求:
定义一个函数(或方法),用于求阶乘的值。
在主函数(或主方法)中调用该递归函数(或方法),求出5的阶乘,并输出结果。

#include<iostream.h>
#include<stdio.h>
void digui(int x,int sum,int i){
if(i==1){
sum=x*(x-1);
x=x-2;
i--;//判断是否为第一次
}
else{
sum=sum*x;
x--;
}
if(x==1){
cout<<sum<<endl;//当阶乘到1的时候结束,输出所求阶乘值
}
else{
digui(x,sum,i);
}
}
void main(){
digui(5,0,1);
/*5即是你要求的系数,0是两个数的积(第一次运算即为5x4),先让其初始值为0,1为指示号码,因为第一次的算法跟后面的递归不一样,
所以要分开判断,第一次后让i归0,执行后面的递归,因为第一次的总和sum=x*(x-1),但后面的sum递归算法是sum*x;
*/
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-03-28
public static void main(String[] args)
{ int Factorial5 = Factorial(5);

System.out.println("5! is " + Factorial5); }

static int Factorial(int n)

{ if (n < 0)

System.out.println("输入的数据错误!");

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

return 1;

else

return Factorial(n - 1) * n; }

}
相似回答