khi i=0 và j=1 thì bắt đầu đổi chỗ. Sau khi đổi chỗ xong và KẾT THÚC vòng for thứ 2 thì ta sẽ có :
0 0 || 2 8 6 3 5
Bạn debug thì sẽ thấy rõ ngay thôi.
Tôi có code bài sắp xếp tăng dần mảng 1 chiều ,chương trình chạy đúng nhưng tui duyệt từng dòng code bằng tay thì không ra(tại gà), pác nào biết chỉ khúc mắc giùm tui nha .
C++ Code:
using namespace std; void sapxep(int ary[]); int main() { int ary[5]={8,6,2,5,3}; sapxep(ary); for(int i=0;i<5;i++) return 0; } void sapxep(int ary[]) { int i,j; for(i=0;i<4;i++) for(j=4;j>i;j--) if(ary[j]<ary[j-1]) { int t=ary[j]; ary[j]=ary[j-1]; ary[j-1]=t; } }
tôi chạy với vòng lặp bằng tay như sau :
i j
0 4 || 8 | 6 | 2 | 3 | 5 |
0 3 || 8 | 2 | 6 | 3 | 5 |
0 2 || 8 | 2 | 3 | 6 | 5 |
0 1 || 8 | 2 | 3 | 5 | 6 |
.................................................. ................
vậy khi chạy tới j<=i , thì vòng lặp thứ 2 kết thúc , không đổi chỗ 8 và 2 được , cái chỗ này tui không hiểu pác nào biết chỉ giùm tui .
khi i=0 và j=1 thì bắt đầu đổi chỗ. Sau khi đổi chỗ xong và KẾT THÚC vòng for thứ 2 thì ta sẽ có :
0 0 || 2 8 6 3 5
Bạn debug thì sẽ thấy rõ ngay thôi.
Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.
sẵn tiện 1 bài nữa giúp giùm nha mèo con![]()
tớ ko hiểu đệ qui này ,theo tớ làm thì số xuất đầu tiên là 4 , nhưng kết quả chạy là 0 0 1 2 3 4C++ Code:
using namespace std; int f(int x); int main() { f(5); return 0; } int f(int x) { if(x>0) f(--x); }, chỉ giùm mình nha
Vì cậu để cout<<x<<" "; sau lời gọi đệ quy if(x>0) f(--x); chứ còn sao nữa. Mà viết hàm chả chịu return gì cả, lười ghê :d
bạn berberin nói đúng rồi đó, đệ quy chạy sâu vào cho đến khi x = 0 mới ngừng và cout lại ở dưới lời gọi đệ quy nên số 0 sẽ được in ra trước.
Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.
vậy là đệ qui chạy hết nó mới bắt đầu xuất ra ah , hix , kiến thức tui hổng nhiều wa , về ôn lại thui .
Thanks 2 you nha .