我無法將此遞歸方法(recP)轉換爲使用循環(itP)的遞歸方法。將遞歸方法更改爲迭代
public class Main {
public static int recP(int n) {
if (n <= 2)
return 1;
else
return (recP(n - 3) * recP(n - 1)) + 1;
}
public static int itP(int n) {
if (n <= 2)
return 1;
else
//do something
}
public static void main(String[] args) {
System.out.println(Main.recP(6)); //returns 9
System.out.println(Main.itP(6)); //should return 9
}
-
如果我是用手工做到這一點,(6)利用遞推公式計算RECP,我會列出工作的步驟和細節丟失填寫,我跟着去了:
P6 = (P3 X P5)+ 1 = (2 X 4) + 1 = 9
P3 = (P0 X P2) + 1 = 2
P5 = (P2 X P4) + 1 = (1 X P4) + 1 = 4
P4 = (P1 X P3) + 1 = (1 X 2) + 1 = 3
-
我知道,一個循環應該在方法的其他部分去,但我不知道這個循環將如何工作。找不到計算recP/itP的公式。 希望能得到一些指導。
爲什麼你有*完全不知道*如何這會工作?你能用英語重述這個問題嗎?你有什麼嘗試? – dcsohl
恭敬地,除非我和你說的英文不同,我想我已經充分解釋了我正在嘗試將遞歸方法recP()重寫爲迭代方法,我已經開始使用它作爲itP()。我很困惑我將如何去編寫一個返回相同值的循環,但不使用任何形式的遞歸。 – ak1652
我的不好,我的意思是要求你用英文描述*解決方案*。如果你不得不用鉛筆和紙來計算它,你會怎麼做? – dcsohl