我使用for循環編寫了JS中的factorial代碼,但沒有顯示所需的輸出。factorial javascript代碼?
我的代碼有什麼問題?
var solution;
for (x = 12; x > 0; x -= 1) {
for (y = 12; y > 0; y -= 1){
solution = y * x;
}
} console.log(solution);
我使用for循環編寫了JS中的factorial代碼,但沒有顯示所需的輸出。factorial javascript代碼?
我的代碼有什麼問題?
var solution;
for (x = 12; x > 0; x -= 1) {
for (y = 12; y > 0; y -= 1){
solution = y * x;
}
} console.log(solution);
您沒有使用solution
當你重新定義它,所以基本上你是計算
solution = 1 * 1;
你的代碼似乎什麼都沒有做階乘或遞歸(這需要一個funtion定義)?
一種12階乘是12 * 11 * 10 ... * 2 * 1
編寫在你想當前一個像這樣乘上一次迭代的結果的循環。
var solution = 1;
for (x = 12; x > 0; x -= 1) {
solution = solution*x
}
console.log(solution);
您的示例將以y和x結束爲1.因此輸出1 * 1。您需要保存上一個操作的結果。
我建議你按照社區規則處理將來的問題,我也不想讓你從這個社區中脫身,但請在將來谷歌。
你的內循環是沒有必要的。您需要設置初始條件(即將解決方案初始設置爲1),然後將12到1的數字反覆乘以該初始條件。
使用for循環稱爲「迭代」而不是遞歸。
遞歸地做到這一點,您至少需要定義一個函數。學習如何遞歸思考是你應該谷歌的東西。
無論採用哪種方式,兩種方式對於找到階乘都是非常基本的,並且使用哪種方法並不重要。
// Iterative
var solution = 1,
number = 12,
x, y;
for (x = number; x > 0; x -= 1) {
solution *= x;
}
console.log(solution);
// Recursive
function fact(n){
if(n == 1)
return 1;
else
return n * fact(n - 1);
}
console.log(fact(number))
你能解釋一下你打算每一部分做什麼? – Ryan
,因爲每次迭代你替換解決方案....所以當你在最後一次迭代,你得到的價值.... – epascarello