首页 新闻 会员 周边 捐助

请用for语句,实现n!(n的阶乘)的代码的编写,基本要求:n可以是任何值;提高要:编写求阶乘的子函数。

-2
悬赏园豆:5 [待解决问题]

请用for语句,实现n!(n的阶乘)的代码的编写,基本要求:n可以是任何值;提高要:编写求阶乘的子函数。

鑫鑫a的主页 鑫鑫a | 初学一级 | 园豆:199
提问于:2022-10-27 09:24

include<iostream>

using namespace std;
int factorial(int n){
int res =1;
if( n ==1){
return res;
}
factorial(n) = factorial(n-1)+facorial(n-2);
}

int main(){
int n,res;
cout<<"请输入要求的阶乘"<<endl;
cin>>n;
res = facorial(n);
cout<<res<<endl;
return 0;
}

jerry-autumn 2年前

n是任何值就有点夸张了。如果超出整形能够表达的最大的值,这题就难了

会长 2年前

@会长: 该数据类型就可以吧,改成long long res,n;

jerry-autumn 2年前

@jerry-autumn: 改成什么都不够啊,long也不能表示所有的数,数是无限的。这个个题目不严谨

会长 2年前
< >
分享
所有回答(3)
0

include<iostream>

using namespace std;
int factorial(int n){
int res =1;
if( n ==1){
return res;
}
factorial(n) = factorial(n-1)+facorial(n-2);
}

int main(){
int n,res;
cout<<"请输入要求的阶乘"<<endl;
cin>>n;
res = facorial(n);
cout<<res<<endl;
return 0;
}

jerry-autumn | 园豆:206 (菜鸟二级) | 2022-10-27 13:34


这个是 什么问题

支持(0) 反对(0) 鑫鑫a | 园豆:199 (初学一级) | 2022-10-27 14:31

@鑫鑫a: 要用c++的编译器,之前的我打错了,include前面要加上#,是#include<iosteam>
如果n的值过大的花就把int类型改成long long类型把

支持(0) 反对(0) jerry-autumn | 园豆:206 (菜鸟二级) | 2022-10-29 07:35
0

python的,非要用for语句的吗
def factorial(n):
    res = 1
    for temp in range(1, n + 1):
        res *= temp
    return res
print(factorial(5))

沙鸥ing | 园豆:202 (菜鸟二级) | 2022-10-28 15:01
0

以前见过,一个大数乘法程序
int factorial(int n)
{
/这里n 最大是10294 改变a[]的大小可以增大n范围/
long a[10000];
int i,j,cjin,mwan=0,wei_out;

a[0]=1;
for(i=1;i<=n;i++)
{
	/* 带进位的乘法,从低位开始,成万后加上进位 */
	cjin=0;
	for(j=0;j<=mwan;j++)
	{
		a[j]=a[j]*i+cjin;
		cjin=a[j]/10000;
		a[j]=a[j]%10000;
	}
	/* 判断是否增加新的进位 */
	if(cjin>0)
	{
		mwan++;
		a[mwan]=cjin;
	}
}
/* 计算总位数,万为单位,乘4后加上最后的位数 */
wei_out=mwan*4+log10(a[mwan])+1;
printf("the factorial of %d is:\n%ld",n,a[mwan]);
/* 显示从高到低的结果,返回位数 */
for(i=mwan-1;i>=0;i--)
	printf("%4.4ld",a[i]);
return wei_out;

}

tablong | 园豆:204 (菜鸟二级) | 2022-11-02 21:36
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册