我不明白這個程序,我不明白爲什麼當程序需要用戶輸入時,數字被初始化爲1。 這就是我所理解的計劃,顯然是錯誤的:爲什麼在這個程序中的錯誤C++?
你走進階乘數,讓我說,進入6,它進入while循環,因爲6是大於1 現在factorial
爲1,number
是6,6 * 1 = 6
。然後,所以factorial
是5,但我得到720作爲輸出。
我不認爲我明白while循環
#include <iostream>
using namespace std;
int main()
{
// declaration of the variables
int factorial, number;
// initialization of the variables
factorial = 1;
number = 1;
// Prompt the user to enter the upper limit of integers
cout << "Please enter the number of the factorial";
cin >> number;
// using the while loop find out the factorial
while (number > 1)
{
factorial = factorial * number;
number = number - 1;
}
cout << "The factorial is " << factorial;
}
或者使用查表,這允許O(1)複雜性(與O(n)複雜性相反)。這是一個查找表實現的例子:https://gist.github.com/1578501。 – 2012-01-08 14:18:55
如果輸入域是無限的,查找表並不能解決問題:)但是,我知道如何使用查找表,並且當您已經知道輸入域時它會更好。 – m0skit0 2012-01-08 14:20:08