01/10/2018, 12:00
Cần giúp đỡ thuật toán xâu nhị phân n phần tử C
#include<stdio.h>
void pr(int s[], int n);
void trye(int i,int s[],int n);
void pr(int s[], int n)
{
int i;
for(i=0;i<=n;i++)
printf("%d ",s[i]);
printf("
");
}
void trye(int i,int s[],int n)
{
int j;
for(j=0;j<=1;j++)
{
s[i]=j;
if(i==n) pr(s,n);
else trye(i+1,s,n);
}
}
int main()
{
int n=1;
int s[4];
printf("
");
trye(0,s,n);
}
Trong quá trình em debug,sau khi em in ra được 00 ,01 thì vòng lặp đáng lý phải thoát ra và trở về hàm main, nhưng đây nó quay lại với giá trị i=0,j=0.Mong các cao nhân debug sau giải đáp giúp em hiểu chổ đó
Bài liên quan
thử sửa lại if(i == n-1) xem sao :v
Thưa anh , thật ra bài toán em là đúng nếu đổi n-1 thì sẽ mất đi sự chính xác của bài toán ạ, dù sao vẫn cảm ơn anh.
Mình thấy gì sai đâu :v
Thưa anh,em không nói bài này sai ạ , chỉ là trong lúc debug sau khi in ra được gt 0 0 và 0 1, thì đáng lý nó phải quay về hàm main nhưng nó lại hàm trye với giá trị i=0,và sau đó nó thực hiện lệnh for và in ra tiếp gt 1 0 và 1 1
anh có thể giải thích giúp em vì sao nó không quay về hàm main mà tiếp tục in ra gt 10 và 11 được không anh (anh debug mới thấy rõ ạ)
Nó trở lại thằng gọi nó là Trye(0), lúc này j của Trye(0) đang là 0 nhảy tiếp vòng For lên thành 1 tiếp tục gọi Trye(1) như nãy nhưng với j = 1.
Tưởng tượng đơn giản thì nó như có N vòng For lồng vào nhau đấy. Chạy hết vòng For này lại trở vòng lặp For trước.
Em cảm ơn cao nhân đã nhiệt tình thông não giúp em bây giờ em đã hiểu ạ ToT