【发布时间】:2019-12-20 02:57:03
【问题描述】:
我为这个标准的日常作业问题编写了一个解决方案,以递归方式解决帕斯卡三角。 Console.log 显示了我的函数得出的答案。打印到 div 的 innerHTML 会将答案写入屏幕。单步执行 chrome 中的 javascript 调试器显示解决方案数组在返回 returnArray 之前存在。但最终,该函数返回“未定义”。没看懂。
var generate = function (numRows) {
var startRow = 1;
var startCol = 1;
var endRow = parseInt(numRows);
var rowArray = [];
var returnArray = [];
var triVal;
var triangle = function (row, col) {
//base case
if (col == 1 || col == row) { //If the element is the either first or last element then initialize it with 1
if (col == 1) {
rowArray = [];
}
triVal = 1;
rowArray.push(triVal);
if (col == row) {
returnArray.push(rowArray);
}
}
else {
//calc
triVal = returnArray[row - 2][col - 2] + returnArray[row - 2][col - 1]
triVal = typeof (triVal) === "undefined" ? 1 : triVal;
rowArray.push(triVal);
}
if (col == row && row == endRow) { //stop the function and return
console.log(JSON.stringify(returnArray));
myDiv2.innerHTML = JSON.stringify(returnArray);
return returnArray;
}
else {
if (col == row) {
col = 1;
row = row + 1;
} else {
col = col + 1;
}
triangle(row, col);
}
}
triangle(startRow, startCol);
};
var test = generate(4);
console.log('test is: ' + test); //Why does it returned undefined
我的第一个解决方案是函数 generate(numRows){};但作业要求解决方案采用表达式形式 var generate = function(numRows) {};第一种方法返回我的预期结果。第二个没有。我不了解 javascript 的哪些基本原理?
【问题讨论】:
-
你有和
if/else,其中只有一个有return声明。从函数声明切换到函数表达式不会有任何区别。 -
并且生成没有回报。
-
您需要将返回的数据存储在某处。
-
谢谢@RolandStarke 这么明显....现在。
标签: javascript function recursion expression undefined