亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

沒有停止條件的for循環?

沒有停止條件的for循環?

波斯汪 2022-10-21 10:51:28
我剛剛完成了 FreecodeCamp.com 測驗中間算法腳本:最小公倍數。代碼對于他們給出的測試用例(和)運行良好[1, 5],但如果我使用更大的范圍,我還必須編輯代碼并增加-loop 的停止條件,當我從循環中刪除停止條件時,它給出了一個錯誤。[5, 1] [23, 18][1, 13]forfunction smallestCommons(arr) {  arr.sort((a, b) => a - b);  const creatArray = (start, stop, step) =>    Array.from(      { length: (stop - start) / step + 1 },      (_, i) => start + i * step    );  let myArray = creatArray(arr[0], arr[arr.length - 1], 1);  for (let i = myArray[myArray.length - 1]; i < 10000000; i++) {    if (myArray.every((e) => calback(e, i))) {      return i;    }  }}let calback = (elem, e) => e % elem === 0;console.log(smallestCommons([1, 5]));這段代碼有什么簡單的修復嗎?我的解決方案是有效的還是有更好的方法來解決這個問題?謝謝
查看完整描述

1 回答

?
慕尼黑的夜晚無繁華

TA貢獻1864條經驗 獲得超6個贊

將解釋一些代碼;我們首先要做的是對數組進行排序,因為它是一個由兩個數字組成的數組,在對它進行排序之后,我們需要創建一個新數組來存儲從第一個元素到第二個元素的路徑;我們定義最大和最小數字之間的差,以便在我們存儲路徑后創建一個存儲路徑;我們定義了兩個函數來求大公約數和最小公倍數;之后我們使用 reduce 來獲得 LCM 的 Value。希望這對你有幫助,gcd的算法是基于歐幾里得劃分


function smallestCommons(arr) {

  arr = arr.sort((a,b)=>a-b)

  let newarr = []

  let dif = arr[1]-arr[0]

  for(let i=0; i<= dif;i++){

        newarr.push(arr[0]+i)

  }

  const gcd = (a,b)=>a?gcd(b%a,a):b;

  const lcm = (a,b)=> a/gcd(a,b)*b

  return newarr.reduce(lcm);

}


console.log(smallestCommons([1, 5]));

console.log(smallestCommons([90,10]));


查看完整回答
反對 回復 2022-10-21
  • 1 回答
  • 0 關注
  • 103 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號