30/09/2018, 18:59
Có ai giải thích hộ chỗ này giúp em với?
Tại sao khi em code thế này
void sapxep(nguoi a[],int n,int j){
nguoi b[40];
for (int i=1;i<=n;i++){
b[j]=a[i];
if (j==n) xuathoanvi(b,n);
else sapxep(a,n,j+1);
}
}
main(){
nguoi ds[40];
int n,k;
nhapsonguoi(n);
nhapDS(ds,n);
sapxep(ds,n,1);
getch();
}
thì màn hình kết quả là giá trị rác nhưng khi code
for (int i=1;i<=n;i++){
b[j]=a[i];
if (j==n) xuathoanvi(b,n);
else sapxep(a,n,j+1,b);
}
}
thì màn hình lại ra kết quả không có giá trị rác
Bài liên quan





Theo mình thấy thì lỗi là do mỗi lần goi đệ quy
sapsep()thì mảngb[10]lại được khai báo, tức là có nhiều mảngb[40]là khác nhau trong mỗi lần gọi đệ quy.Để mảng
blà chung cho tất cả lần gọi đệ quy thì tốt nhất la truyền mảngbnhư là tham số hoặc khai báoblà biến toàn cục;à em hiểu rồi vậy như code đầu tiên là mỗi lần đệ quy nó lại tạo ra một mảng
b[40]còn code 2 thì chỉ tạo 1 lần rồi gọi lại chính nó