【求助】程式問題(含程式碼以及圖片)



贊助商連結


hyffdmy
2005-10-30, 12:07 AM
程式碼如下
=========================================================
#include <iostream.h>

void wwww(int *a,int f,int t) {
int i=f; int j=t; int mid=(f+t)/2; int key=a[mid]; int c=0;
cout << "f=" << f << " " << "t=" << t << " ";
cout << "\n";
do{
while(a[i] < key) i++; while(a[j] > key) j--;
if(i <= j) {
int temp=a[i]; a[i]=a[j]; a[j]=temp;
i++; j--;
}
for(c=0;c<=5;c++) cout << a[c] << " ";
cout << "i=" << i << " " << "j=" << j << " ";
cout << "\n";
} while(i <= j);
if(f < j) wwww(a,f,j);
if(i < t) wwww(a,i,t);
}

void main()
{
int a[6],i;

for(i=0;i<=5;i++) cin >> a[i]; wwww(a,0,5);
for(i=0;i<=5;i++) cout << a[i] << " ";
cout << "\n";
}
============================================================

為什麼結果的第14行i=1 ; j=-1
在if的判斷不是就false了
為什麼還會有第15行的f=2 ; t=4
為什麼呢??
請會的人告訴我
拜託 很急
一直想不出來
謝謝大家

圖片網址如下
http://www.pcdvd.com.tw/attachment.php?attachmentid=42938

贊助商連結


alec5106
2005-10-31, 12:02 AM
你可以利用中斷點來debug
當你 在結果第十四行 i=1 j=-1 是結束了 do.. while的迴圈
但下一行你使用了遞迴的寫法,又呼叫了 wwww()這個函數,所以又執行了下面的結果