Javascript 多方法递归解释倒计时函数

Javascript 多方法递归解释倒计时函数,javascript,recursion,Javascript,Recursion,我正在尝试编写一个递归,它将创建一个倒计时数组。函数应在myArray参数中获取一个数组,并根据n参数将数字n追加到1。例如,使用n=5调用此函数将在数组中填充[5,4,3,2,1]。您的函数必须通过调用自身来使用递归,并且不得使用任何类型的循环 似乎有多种方法可以编写递归,是否有一种普遍接受且易于阅读的方法 function countdown(myArray, n){ if (n>=1) { myArray = countdown(myArray, n-1);

我正在尝试编写一个递归,它将创建一个倒计时数组。函数应在
myArray
参数中获取一个数组,并根据
n
参数将数字
n
追加到1。例如,使用
n=5
调用此函数将在数组中填充
[5,4,3,2,1]
。您的函数必须通过调用自身来使用递归,并且不得使用任何类型的循环

似乎有多种方法可以编写递归,是否有一种普遍接受且易于阅读的方法

function countdown(myArray, n){
  if (n>=1) {
     myArray = countdown(myArray, n-1);
     myArray.unshift(n);
  }
  return myArray;
}


function countdown(myArray, n){
 if (n<=0) {
   return;
 } else {
   myArray.push(n);
   countdown(myArray,n-1);
 }
}
函数倒计时(myArray,n){
如果(n>=1){
myArray=倒计时(myArray,n-1);
myArray.unshift(n);
}
返回myArray;
}
函数倒计时(myArray,n){

if(n如果您将else分支添加到第一个函数中,并将return移动到两个分支中(因此不会改变其含义):

现在反转if语句(交换条件和分支):


if(n我认为
returnmyarray
else
语句中导致整个函数退出是错误的吗?
 if (n>=1) {
   myArray = countdown(myArray, n-1);
   myArray.unshift(n);
   return myArray;
 } else {
   return myArray;
 }
 if(n <= 0) {
   return myArray; 
 } else {
   myArray = countdown(myArray, n-1);
   myArray.unshift(n);
   return myArray;
 }