尋找從學校的一個java任務的幫助,我想創建一個遞歸算法,解決了以下的難題:遞歸函數不正確的輸出
給定一個起始位置和長度爲n的由n-1陽性的數組與陣列爲0的最後一個位置編號,例如:
{4 8 5 2 3 5 1 6 4 0}
遊戲規則:
向右等於值@起始從起始位置移動 的位置,重複,直到你不能再移動到右邊。
一旦你不能再向右移動,向右移動 向右移動,一旦你不能移動到左邊的 。
現在繼續重複這個過程。
當您移動的0
的 列保持價值的最後一個位置的難題將得到解決,否則這一難題是無法解決的。
- 在上面的例子,如果我們開始@第一位置是「4」
- 我們向右移動4位結束了@位置5保持值3
- 我們向右移動3結束了@ 8位容值6
- 位置移動到左側的6個位置結束了@ 2位容值8
- 我們向右移動8個位置@最後一個位置保存值結束了0
- 因爲我們已經移動到陣列的最後一個位置,這個難題是可以解決的。
我必須使用遞歸來解決這個難題,我已經提出了算法,但即使拼圖是可解的,我也會得到錯誤的輸出。
這裏是我的算法:
static boolean rightWing(int[] A, int i) //i = starting position
{
int left=i;
int right=A.length-i-1;
if (A[i]<right)
{
i=i+A[i];
rightWing(A, i);
}
if (A[i]<left)
{
i=i-A[i];
rightWing(A,i);
}
if (right==A[i])
return true;
else
return false;
}
這是一個讓您熟悉使用調試器的機會,它將成爲您軟件開發中最寶貴的技能。 https://ericlippert.com/2014/03/05/how-to-debug-small-programs/ – David