我有這個不起作用,對于像騎自行車一樣1 2 3 4 5 6 7 8 9 1 2 3 4 ...,在 1 到 9 之間騎自行車。
const cycle = integers => {
let i = 0
let x = integers[i ]
while (i < integers.length) {
let y = integers[i ]
const s = x y
const remainder = (s % 9) 1
x = remainder
}
return (x - 1) % 9
}
logCycle([ 9, 6 ])
logCycle([ 9, 9 ])
logCycle([ 9, 9, 9, 9, 9 ])
logCycle([ 9, 129, 993, 91, 9 ])
logCycle([ 9, 10 ])
function logCycle(i) {
log('cycle', i, cycle(i))
}
function log(t, i, o) {
console.log(`${t}(${JSON.stringify(i)}) => ${o}`)
}
注意cycle([9, 9])它是如何回傳 0 的,而在其他地方它也崩潰了。該cycle函式采用任意長度的整數陣列。所以陣列可能有 1000000 個專案,或者只有 2 個。
我預計:
cycle([9, 9]) => 9cycle([9, 10]) => 1
我怎樣才能讓它正常作業?我如何讓它適用于任何一對最小/最大數字,比如如果我想在(包括)5 和 13,或 79 和 5337 之間回圈,我該如何讓它像這樣通用?
該cycle函式對結果求和并取模,使其在該范圍內理想地“回圈”。它不是在回圈中迭代,而是在“回圈中求和”,就像時鐘一樣。
還希望保持解決方案非遞回,因為其中的元素數量array可能很大。
uj5u.com熱心網友回復:
顯然,我起初誤解了問題的某些部分。在閱讀了更多評論之后,在我看來
- 要逐步執行的數字可以是任何先前定義的序列,例如從 1 到 9、從 5 到 13 或從 79 到 5337
- 通過上述序列(重復)的總步數由回圈函式的所有引數的總和給出。
對于這些要求,以下應該起作用:
function defCycle(m,n){
const base=n-m 1,off=m-1; // base: sequence-length, off: offset of sequence
return arr=>(arr.reduce((a,c)=>a c)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/474846.html
標籤:javascript 数学
