请用for语句,实现n!(n的阶乘)的代码的编写,基本要求:n可以是任何值;提高要:编写求阶乘的子函数。
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;
}
这个是 什么问题
@鑫鑫a: 要用c++的编译器,之前的我打错了,include前面要加上#,是#include<iosteam>
如果n的值过大的花就把int类型改成long long类型把
python的,非要用for语句的吗
def factorial(n):
res = 1
for temp in range(1, n + 1):
res *= temp
return res
print(factorial(5))
以前见过,一个大数乘法程序
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;
}
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(){
– jerry-autumn 2年前int n,res;
cout<<"请输入要求的阶乘"<<endl;
cin>>n;
res = facorial(n);
cout<<res<<endl;
return 0;
}
n是任何值就有点夸张了。如果超出整形能够表达的最大的值,这题就难了
– 会长 2年前@会长: 该数据类型就可以吧,改成long long res,n;
– jerry-autumn 2年前@jerry-autumn: 改成什么都不够啊,long也不能表示所有的数,数是无限的。这个个题目不严谨
– 会长 2年前