JavaScript 递归 [9 个练习和解决方案]

1.编写一个 JavaScript 程序来计算一个数的阶乘。在数学中,非负整数 n 的阶乘,用 n! 表示,是所有小于或等于 n 的正整数的乘积。

例如,5!= 5 x 4 x 3 x 2 x 1 = 120

复制代码
function factorial(x){
  if(x===0){
    return 1;
  }
  // console.log(x)
  return x*factorial(x-1);
}

console.log(factorial(5))
复制代码

 

 

2.编写一个 JavaScript 程序来找到两个正数的最大公约数 (gcd)。

  var gcd = function(a,b){
    if(!b){
      return a;
    }
    return gcd(b,a%b);
  }

  console.log(gcd(2154,458))

 

 

3.编写一个 JavaScript 程序来获取 (x, y) 范围内的整数。

range(2, 9)预期输出: [3, 4, 5, 6, 7, 8]

复制代码
var range = function(start_num,end_num){
  if(end_num - start_num ===2){
    return [start_num +1]
  }else{
    var list = range(start_num,end_num-1);
    list.push(end_num-1);
    return list;
  }
}

console.log(range(2,9))
复制代码

 

 

4.编写一个 JavaScript 程序来计算整数数组的总和。

 示例:var array = [1, 2, 3, 4, 5, 6]预期输出: 21

复制代码
 var array_sum = function(my_array){
   if(my_array.length === 1){
     return my_array[0];
   }
   else{
     return my_array.pop()+array_sum(my_array);
   }
 }

 console.log(array_sum([1,2,3,4,5,6]))
复制代码

 

 

5.编写一个 JavaScript 程序来计算一个数的指数。

 注意:数字的指数表示使用基数作为因子的次数。 8 2 = 8 x 8 = 64。这里 8 是底数,2 是指数

复制代码
  var exponent = function(a,n){
    if(n===0){
      return 1;
    }
    else{
      return a * exponent(a,n-1);
    }
  }

  console.log(exponent(4,2));
复制代码

 

 

6.编写一个 JavaScript 程序来获取前 n 个斐波那契数。

 注意:斐波那契数列是一系列数字:0、1、1、2、3、5、8、13、21、34,... 随后的每个数字都是前两个数字的总和。

复制代码
  var fibonacci_series = function(n){
    if(n===1){
      return [0,1];
    }
    else{
      var s = fibonacci_series(n-1);
      s.push(s[s.length-1]+s[s.length-2]);
      return s;
    }
  }

  console.log(fibonacci_series(8))
复制代码

 

 

7.编写一个 JavaScript 程序来检查一个数字是否是偶数。

复制代码
    function is_even_recursion(number){
      if(number < 0){
        number = Math.abs(number);
      }
      if(number === 0){
        return true;
      }
      if(number === 1){
        return false;
      }
      else{
        number = number -2;
        return is_even_recursion(number)
      }
    }

    console.log(is_even_recursion(234))
    console.log(is_even_recursion(-45))
    console.log(is_even_recursion(65))
复制代码

 

 

8.编写一个用于二分查找的 JavaScript 程序。

示例数组:[0,1,2,3,4,5,6] console.log(l.br_search(5)) 将返回 '5

复制代码
 Array.prototype.br_search = function(target){
   var half = parseInt(this.length / 2);
   if(target === this[half]){
     return half;
   }
   if(target > this[half]){
     return half+this.slice(half,this.length).br_search(target);
   }else{
     return this.slice(0,half).br_search(target);
   }
 }

 l=[0,1,2,3,4,5,6]

 console.log(l.br_search(5))
复制代码

 

 

9.用 Ja​​vaScript 编写归并排序程序。

示例数组:[34,7,23,32,5,62]示例输出: [5,7,23,32,34,62]

复制代码
 Array.prototype.merge_Sort = function(){
   if(this.length <=1){
     return this;
   }

   var half = parseInt(this.length /2);
   var left = this.slice(0,half).merge_Sort();
   var right = this.slice(half,this.length).merge_Sort();
   var merge = function(left,right){
     var arry = [];
     while(left.length > 0 && right.length >0){
       arry.push((left[0] <= right[0]) ? left.shift() : right.shift());
     }
     return arry.concat(left).concat(right);
   };

   return merge(left,right);
 }

 var a=[34,7,23,32,5,62];
 console.log(a.merge_Sort())
复制代码

 

posted @   漫漫长路</>  阅读(684)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示