static void sort(int array[])
{
//int array[]={20,40,30,60,70,80,50,90};
if(array.length==1)
return;
int mid=array.length/2;
int part1[]=new int[mid];
int part2[]=new int[array.length-mid];
for(int i=0; i<array.length; i++)
{
if(i<mid)
{
part1[i]=array[i];
}
else
{
part2[i-mid]=array[i];
}
}
sort(part1);
sort(part2);
merge(part1,part2,array);
//for(int x=0; x<part1.length; x++)
//System.out.print(part1[x]+" ");
//for(int x=0; x<part2.length; x++)
//System.out.print(part2[x]+" ");
}
我知道遞歸是稱爲自我的方法(函數)。 (part1)方法,然後sort(part1)被反覆執行,以及sort(part2)和merge(part1,part2)如何執行並調用自身的sort(part1)方法,數組)被執行,爲什麼這個代碼不是無限的,程序是如何停止的。在Java中 抱歉即時通訊新遞歸如何工作
用調試器一步一步通過代碼。 – kai
當array.length == 1時,執行將停止 – Kick
'if(array.length == 1)return;'是什麼讓你的代碼停止。你有沒有嘗試在StackOveflow上查找關於遞歸的其他問題? –