C++ 卡在循环C+上+;
我想做一个阶乘 阶乘通过用户输入接受一个数字,然后执行此公式C++ 卡在循环C+上+;,c++,for-loop,factorial,C++,For Loop,Factorial,我想做一个阶乘 阶乘通过用户输入接受一个数字,然后执行此公式 input = 5; 5! = 5(4)(3)(2)(1) 唯一的问题是,它的说法是不能使用'fac'作为一个函数,除了它的数学,我认为是正确的,是的 #include <iostream> using namespace std; int main() { int fac = 0; int sum = 0; int cnt = 1; cout << "Input a nu
input = 5;
5! = 5(4)(3)(2)(1)
唯一的问题是,它的说法是不能使用'fac'作为一个函数,除了它的数学,我认为是正确的,是的
#include <iostream>
using namespace std;
int main()
{
int fac = 0;
int sum = 0;
int cnt = 1;
cout << "Input a number to get the Factorial: ";
cin >> fac;
for (fac; fac > 0; cnt ++)
{
sum = fac(fac - cnt)
}
cout << fac << "! : ";
}
#包括
使用名称空间std;
int main()
{
int fac=0;
整数和=0;
int-cnt=1;
cout>fac;
对于(fac;fac>0;cnt++)
{
总和=fac(fac-cnt)
}
在标准数学中,邻接意味着乘法。在大多数计算机语言中,它不是
在C++中,必须使用<代码> */COD>运算符乘以两个量:
sum = fac * (fac - cnt)
但是,您会发现程序中还有一些其他数学/逻辑错误。例如,当fac>0
为false时退出循环,但您从未修改循环中的fac
。因此循环要么执行零次,要么执行无限次。在标准数学中,邻接意味着mu在大多数计算机语言中,它不是
在C++中,必须使用<代码> */COD>运算符乘以两个量:
sum = fac * (fac - cnt)
但是,您会发现您的程序中还有一些其他数学/逻辑错误。例如,当fac>0
为false时退出循环,但您从未修改循环中的fac
。因此循环将执行零次,或执行无限次。除了其他逻辑之外,错误是一个错误由于fac(fac cnt)而上升。我认为您正在尝试将这些变量相乘。请尝试以下方法
fac*(fac cnt);
除了您的其他逻辑之外,错误是由fac(fac cnt)引起的。我认为您正在尝试将这些变量相乘。请尝试以下操作
在C++中,你不能乘法说<代码> 4(2),因为我们经常做数学速记。你必须明确地使用<代码> */COD> < < /P>
for( fac; fac > 0; cnt++ )
{
sum = fac * (fac - cnt);
}
但是,这并不能满足您的需要。因为您从未修改过fac
,所以这将永远循环。您希望将当前值乘以正在运行的乘积
int prod = 1;
for( i = fac; i > 0; --i ) // <-- notice the --i
prod = prod * i; // <-- equiv to prod *= i;
因此,prod
的值是阶乘。只需输出它
cout << fac << "! = " << prod << endl;
C++中,你不能乘以说<代码> 4(2)< /代码>,因为我们经常做数学速记。你必须明确使用<代码> */COD> < < /P>
for( fac; fac > 0; cnt++ )
{
sum = fac * (fac - cnt);
}
但是,这并不能满足您的需要。因为您从未修改过fac,所以这将永远循环。您希望将当前值乘以正在运行的乘积
int prod = 1;
for( i = fac; i > 0; --i ) // <-- notice the --i
prod = prod * i; // <-- equiv to prod *= i;
因此,prod
的值是阶乘。只需输出它
cout << fac << "! = " << prod << endl;
cout我发现你的问题很不清楚。看来你需要一个递归方法来计算a
看看这个
int fac(int n)
{
return (n == 1 || n == 0) ? 1 : fac(n - 1) * n;
}
从这里得到:
编辑:啊!别介意这个答案,快读吧我发现你的问题很不清楚。看起来你想要一个递归方法来计算a
看看这个
int fac(int n)
{
return (n == 1 || n == 0) ? 1 : fac(n - 1) * n;
}
从这里得到:
编辑:嘎!不要介意这个答案,快速阅读fac
是一个int
。语法fac(fac-cnt)
毫无意义。你不能调用int
。这就像编写5(5-1)
。调用5意味着什么?另外,fac>0
是一个无限循环(假设fac
开始时为正值),因为fac
在循环内不会改变;你只会改变sum
和cnt
。你必须fac
这cnt
真的很难让它工作。fac
是int
。语法fac(fac-cnt)
没有任何意义。你不能调用int
。这就像写5(5-1)
。调用5意味着什么?而且,fac>0
是一个无限循环(假设fac
开始为正),因为fac
在循环内不会改变;你只会改变sum
和cnt
。你必须fac
那cnt
真的很难让它工作。你可以用i>1
替换0
,并保存一次迭代;)所以输入i在原始代码中等同于cnt?不确定我是如何进入所有内容的,所以有点混乱你可以用i>1
替换i>0
,并保存一次迭代;)所以输入i在原始代码中等同于cnt?不确定我是如何进入所有内容的,所以有点混乱