我在解決這個問題的時候遇到了麻煩,這個問題不涉及到循環。基本上,如果某件事比某些任意數量大,它會循環。假設64是數字。可能沒有循環做到這一點?
0 => 0
32 => 32
64 => 64
96 => 32
128 => 64
160 => 32
192 => 64
et cetera。
我現在正在做這件事的方式涉及一個while循環,檢查值是否超過64,如果是,從中減去64。有沒有另外一種方法可以做到不涉及循環?
我正在使用C#WinForms。
我在解決這個問題的時候遇到了麻煩,這個問題不涉及到循環。基本上,如果某件事比某些任意數量大,它會循環。假設64是數字。可能沒有循環做到這一點?
0 => 0
32 => 32
64 => 64
96 => 32
128 => 64
160 => 32
192 => 64
et cetera。
我現在正在做這件事的方式涉及一個while循環,檢查值是否超過64,如果是,從中減去64。有沒有另外一種方法可以做到不涉及循環?
我正在使用C#WinForms。
public static int filterNumber(int x, int arbitraryNumber) {
if (x < arbitraryNumber) {
return x;
}
int result = x % arbitraryNumber;
if (result == 0) {
return arbitraryNumber;
}
return result;
}
這工作完美。 Upvoted和接受! –
將值修改爲64,這是O(1)操作。就像這樣:
int number;
// number is initialized
number %= 64;
這是最好的方法。 –
Doh。我只是使用模運算符來處理其他事情。我想我需要睡覺..嘿。謝謝。 –
我不會說這是O(1)。複雜性類(Big-O符號)是使用圖靈機定義的,您必須在圖靈機上執行O(n)操作。試着寫一個沒有使用整數除法的操作方法。 –
如果你可以在遞歸方法可能被證明是更實用,找到合適的案例。你有沒有考慮遞歸? – Hyperbole
我明白第1,2,3,4,5和6行。然而根據你的描述,196應該產生196 -64-64-64 = 4.你在問題中缺少什麼? – Oli
Woops錯字。感謝您的支持。 –