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

javascriptweb developmentobject oriented programming更新于 2025/10/10 0:44:17

从数字 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

相关文章


有用资源