首页 > 解决方案 > 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 的数字!任何帮助将不胜感激,我已经有一段时间了,感觉我错过了一些非常小的东西。

标签: c++

解决方案


推荐阅读