【发布时间】:2020-04-14 18:19:26
【问题描述】:
我从 HackerRank 开始,我是一个该死的初学者。
所以我对这段代码有疑问:
'use strict';
process.stdin.resume();
process.stdin.setEncoding('utf-8');
let inputString = '';
let currentLine = 0;
process.stdin.on('data', inputStdin => {
inputString += inputStdin;
});
process.stdin.on('end', _ => {
inputString = inputString.trim().split('\n').map(string => {
return string.trim();
});
main();
});
function readLine() {
return inputString[currentLine++];
}
/*
* Create the function factorial here
*/
function factorial(n) {
if (n === 1) {
return 1
} else {
return n * factorial(n - 1)
}
return n;
}
function main() {
const n = +(readLine());
console.log(factorial(n));
}
我把它分解成这样的:
让我们依赖 n = 4;
4 === 1 ? // NO!
THEN:
4 * factorial(4-1) // n = 3;
3 === 1? // NO!
THEN:
3 * factorial(3-1) // n = 2;
2 === 1? // NO!
THEN:
2 * factorial(2-1) // n = 1;
1 === 1? // YES!
return 1;
现在会发生什么? return 1 发生了什么,所有其他“循环”发生了什么?!为什么它会一遍又一遍地循环,即使没有循环?
请尽量简单地解释。
【问题讨论】:
标签: javascript loops for-loop if-statement