使用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 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始
廣告
© . All rights reserved.