這裏是我的問題:遞歸方法施工
編寫一個叫做
binaryToDecimal
遞歸方法。該方法應該將一個二進制位串轉換爲一個10位整數。示例調用從我們RecursionExamples
類的對象將是answer = example.binaryToDecimal("101111")
的整數返回是47
我需要幫助來解決這個問題去。我知道這將是一個if-else循環,但如何去實現它讓我感到驚訝。 (這是日食環境)。
這裏是我的問題:遞歸方法施工
編寫一個叫做
binaryToDecimal
遞歸方法。該方法應該將一個二進制位串轉換爲一個10位整數。示例調用從我們RecursionExamples
類的對象將是answer = example.binaryToDecimal("101111")
的整數返回是47
我需要幫助來解決這個問題去。我知道這將是一個if-else循環,但如何去實現它讓我感到驚訝。 (這是日食環境)。
你想要做的很簡單:
這裏是一個更類似Java的僞代碼,沒有透露太多:
public int binToDec(String binary)
{
if (end_conditions) return int
int lastDigit = Integer.process
String restOfString = binary.substring
return lastDigit + 2* binToDec(restOfString);
}
感謝你們倆的幫助。這些遞歸方法bug我 – 2010-11-08 01:11:14
如果你想解決它的遞歸,考慮一個二進制字符串,你可以將它轉換爲一個整數,通過基於最右邊的數字加上1或0,基於字符串的其餘部分增加2倍這個函數。
它看起來像這樣的僞
// input is an integer of 1's and 0's
def f(int binaryString):
int lastDigit = binaryString % 10 // Get the last digit
int restOfString = binaryString/10 // Remove the last digit
return lastDigit + (2 * f(restOfString)) // add the last digit to twice f
// applied to the rest of the string
您還可以檢查時,字符串的其餘部分都消失殆盡的最終條件,但是這是對基本邏輯方法。
我不完全確定如何在我的方法中使用這個。 – 2010-11-08 00:41:35
這是怎麼回事?這是你試圖編寫的方法,只是它是僞代碼,而不是java,你希望輸入字符串不是整數,所以要麼將其轉換爲數字,要麼使用String的'substring'方法來實現語義目標。 – 2010-11-08 00:43:51
我會發布我很快想到的 – 2010-11-08 00:55:02
int binaryToDecimal(String s){
if (s.isEmpty() || Integer.parseInt(s)==0){ // It's a little weird because the only
return 0; // argument is a String.
}
else{
int number = Integer.parseInt(s);
int lastDigit = number % 10;
int remainder = number \ 10;
return lastDigit + 2 * binaryToDecimal(String.valueOf(remainder))
}
}
我要指出的是,提供一個工作解決方案的作業問題是不好的形式。然後我看了一下代碼。 :-) – 2010-11-08 01:49:28
感謝您的提示。 :) – 2010-11-08 02:00:33
你應該表現出到目前爲止你已經嘗試過的東西。另外,「我知道這將是一個for-else循環......」如果它需要遞歸,可能不會。 – 2010-11-08 00:23:29