這是我到目前爲止能夠想到的。從int中移除的方法
public static int evens(int n)
{
String num = "" + n;
if (n>1) {
if (n%2 == 0) {
return n + evens(n%10);
}
else {
int len = num.length();
num = num.substring(0, len-1);
n = Integer.parseInt(num);
return n + evens(n%10);
}
}
else {
return n;
}
}
我的邏輯是使整一個字符串,然後通過10每一次分裂,使下一個數字(從右到左)在個位(使用整數前面的數字應該被丟棄我相信) 。然後我試圖用%2找到餘數,如果它不是== 0,那麼這個位置的數字是奇數,並以某種方式從字符串中消除該數字(通過獲取長度,然後從0 len-1)。我認爲我的問題包括可能的邏輯,顯然我的語法有些問題,並且定義字符串的方法的第一行導致它通過每次遞歸重新定義,並將其搞亂。
我有時不知道爲什麼學校仍然執行遞歸,當時在校園外的使用是絕對沒有的。 (在我被灼傷之前,我意識到有時遞歸是排序樹等時的好朋友,但我仍然認爲遞歸是好僕人,但是殘酷的主人,應該儘可能避免) –
n%10 == 4所以你永遠不會得到一個不是n%2 == 0的數字,你會得到一個stackoverflow異常。 –
@TheLaw您對遞歸的「可用性」是正確的(通常可以通過使用迭代方法來防止)。但我認爲你錯過了一個重要的觀點:大學不*試圖讓你準備在這個行業工作,他們正在努力爲你準備更高的學位...... :) – alfasin