c++ - c ++代码停止中间循环但不抛出任何错误
问题描述
我正在开发一个程序,旨在确定一个数字是否是阶乘以及它是什么阶乘。IE 如果输入的是 39916800,程序会打印“The number is 11!”。我下面的代码是旨在执行此操作的函数。问题是当你输入一个等于或大于 12 的数字时!程序完成循环而不是停止运行。我使用 print 语句来表明它不会再次循环,也不会继续执行程序。
long getFactorial(long a)
{
long ans = -1;
long i = 2;
long fact = 2;
while(fact < a)
{
cout << "before i++" << endl;
i++;
cout << "before fact*i" << endl;
fact = fact * i;
cout << "before print" << endl;
cout << fact << " " << (fact < a) << endl;
cout << "after print" << endl;
}
cout << "after while";
if(fact == a)
{
ans = i;
}
return ans;
}
最后循环打印,
before i++
before fact*i
before print
87178291200 0
after print
然后停止运行。该代码适用于任何等于或小于 11 的数字!任何帮助将不胜感激,我已经有一段时间了,感觉我错过了一些非常小的东西。
解决方案
推荐阅读
- python - TypeError:“IMapIterator”类型的对象没有用于 pool.imap 的 len()
- php - 这是使用 CURL(通过 PHP)通过代理发出请求的正确方法吗?
- postgresql - Docker postgres 映像:主机没有 pg_hba.conf 条目
- angular - 触发单击 Angular 2/4 表单中的表单提交按钮导致边缘浏览器出现问题
- javascript - 等待上一个动作执行
- xml - 这个角色是什么?空白,但它的代码是 63(问号)
- c++ - 检查数组中的数字,然后比较它们的值
- r - rsqlite 表和润滑
- for-loop - 如何使用 awk 和 grep 计算两个文件的平均值
- html - Angular Ts 更新 for 循环中的元素