虽然在 c++ 中循环任务
While loop task in c++
我是 c++ 的初学者,我在使这段代码按照我想要的方式工作时遇到了问题。任务是编写一个程序,将所有自然数乘以加载的数字 n。
为了使它打印正确的结果,我将x
除以n
(见下面的代码(。如何让它打印x
而不必除以n
才能得到正确答案?
#include<iostream>
using namespace std;
int main(){
int n,x=1;
int i=0;
cout<<"Enter a number bigger than 0:"<<endl;
cin>>n;
while(i<n){
i++;
x=i*x;
};
cout<<"The result is: "<<x/n<<endl;
return 0;
}
一开始,你最好尽快习惯一个原则:始终检查用户输入的正确性!
cin >> n;
if(cin && n > 0)
{
// valid
}
else
{
// appropriate error handling
}
不确定,为什么需要 while 循环?在这种情况下,for 循环肯定更好:
int x = 1;
for(int i = 2; i < n; ++i)
x *= i;
如果您仍然想要 while 循环:从 i == 2
开始(无论如何 1 是中性的(,然后递增:
i = 2;
while(i < n)
{
x *= i;
++i;
}
在n == 1
的情况下,循环(任一变体(根本不会进入,你很好......
你已经有两个非常好的选择,但当你在编程中足够轻松时,你可能想看看另一个:
unsigned factorial(unsigned value)
{
if (value <= 1)
{
return 1;
}
else
{
return value * factorial(value - 1);
}
}
这是一个递归函数,在适当的时候使用时很整洁(不幸的是,这里的情况并非如此,因为执行堆栈可能会变得如此之大,以至于在完成之前填满了内存。但是您可以查看它以了解有关递归函数的更多信息(
当您的内存已满时,您的应用程序就会崩溃,实际上称为堆栈溢出。
我怎样才能做到在最后
cout
我只能输入 x,而不必将 x 除以 n 才能得到正确答案?
最好使用for
循环。
// This stops when i reaches n.
// That means, n is not multiplied to the result when the loop breaks.
for (int i = 1; i < n; ++i )
{
x *= i;
}
cout << "The result is: " << x <<endl;
相关文章:
- 如何循环打印顶点结构
- 如何在C++中从两个单独的for循环中添加两个数组
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 正在尝试了解输入验证循环
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 循环后如何继续阅读
- Ardunio UNO解决了多个重叠的定时器循环
- Eigen如何在容器循环中干净地附加矩阵
- 在某些循环内使用vector.push_back时出现分段错误
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- 任务内部的 OpenMP 任务循环
- 如何在循环内将大对象复制到omp任务中?
- 虽然在 c++ 中循环任务
- 条件变量虚假唤醒/循环任务
- 使用单个循环而不是 2 个 c++ 完成任务
- 如何在循环中使用 ppl 任务和 .then
- 使用OpenMP将循环划分为唯一的任务
- 尝试使用while循环取消分配向量,任务管理器显示内存使用正在增加
- 如何用c++在Windows主循环中执行任务
- 我应该在openMP并行区域(for循环,任务)内使用gnu并行模式函数吗?