使用JavaScript递归检查一系列操作是否产生给定数字


从数字1开始,反复加5或乘以3,可以产生无限多个新数字。我们需要编写一个函数,给定一个数字,尝试找到这样一系列加法和乘法运算来产生该数字,并根据是否存在这样的序列返回布尔值。

例如:

数字13可以通过先乘以3,然后加两次5来得到,所以函数应该对13返回true。而数字15根本无法达到,所以函数应该对15返回false。

方法

我们将使用递归方法,反复尝试所有可能导致所需解决方案的可能性。此方法的代码将是:

示例

const sequenceExists = (num, curr = 1) => {
   if(curr > num){
      return false;
   };
   if(curr === num){
      return true;
   };
   return sequenceExists(num, curr+5) || sequenceExists(num, curr*3);
};
console.log(sequenceExists(18));
console.log(sequenceExists(15));
console.log(sequenceExists(32));
console.log(sequenceExists(167));
console.log(sequenceExists(17));
console.log(sequenceExists(1119));

输出

控制台中的输出将是:

true
false
true
true
false
true

更新于:2020年8月25日

68 次浏览

启动您的职业生涯

完成课程获得认证

开始
广告