[英](Javascript) Recursive function that works on first call but not on second When Oscillating numbers
我正在尝试通过在 Javascript 上使用 Recursion 对振荡数进行迭代,但不幸的是它没有得到预期的 output。第一次调用有效,但第二次调用失败。 这是代码:
let result = []; function oscillator(A) { if (result[result.length - 1] == A) { // base case return result; } let number = A; if (number > 0) { number -= 5; result.push(number); } else { number += 5; result.push(number); } return oscillator(number); } console.log(oscillator(16));
显示的结果只是[ 11 ]当预期的 output 应该是: 16 11 6 1 -4 1 6 11 16
从该代码中,递归的基本情况应更改为:
if (base == 0) {
base = A;
} else if (A == base) {
return result;
}
let result = []; var base = 0; var dirDown = true; function oscillator(A) { // need to set the condition to check if the base case is number is reached. if (base == 0) { base = A; } else if (A == base) { return result; } // Push the number into result result.push(A); let number = A; if ((number > 0) && dirDown) { number -= 5; } else { // set dirDown to false to prevent the number keep looping in -4 and 1 dirDown = false; number += 5; } return oscillator(number); } console.log(oscillator(16));
如果运行上面的代码片段,您将看到以下结果:
[16, 11, 6, 1, -4, 1, 6, 11]
感谢整理代码
在代码中添加了一些注释以进行解释
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.