01/10/2018, 15:37

Cách dừng quay lui khi in được cấu hình đầu tiên

#include <iostream>

using namespace std;

int kiemtra(int a[],int m)
{
    int tong=0;
    for (int i=0;i<m;i++)
    {
        tong=tong+a[i];
    }
    return tong;
}
int dem=0;
int Sinh1(int a[],int i,int m,int s)
{
    for (int j=0;j<=9;j++)
    {
        a[i]=j;
        if (i==m-1)
        {
            if(kiemtra(a,m)==s)
            {
                for (int k=0;k<m;k++)
                {
                    cout << a[k];
                }
            }
        }
        else
        {
            Sinh1(a,i+1,m,s);
        }
    }
}

int main()
{
    int m,s;
    cin >> m >> s;
    int a[m+1];
    Sinh1(a,0,m,s);
    cout << " ";

    return 0;
}
HK boy viết 17:37 ngày 01/10/2018

Thêm return là xong. Đó là cấu trúc của 1 chương trình đệ quy cơ bản.

try(i, m) {
    if (i >= m) {
        if check(...) {
            // do something
        }
        return;  // có thể return giá trị nếu là hàm hoặc return; nếu là void
    }
    // do something else
    try(i + 1, m);
}

Nếu muốn thoát hẳn đệ quy, thêm exit(0) vào chỗ return trong hàm đệ quy kia (điều này dẫn đến thoát luôn chương trình hiện tại, hay nói cách khác là cho code dừng hẳn luôn).

Đỗ Nam viết 17:40 ngày 01/10/2018

Mình đã thử dùng return. Nhưng vẫn ra đủ cấu hình . ( Mình cũng thử với break rồi >:)

Đỗ Nam viết 17:39 ngày 01/10/2018

Dùng exit thì được :v. @@ Mình cảm ơn

Đỗ Nam viết 17:44 ngày 01/10/2018

Nhưng nếu mình muốn thực hiên 2 hàm như hàm ssinh trên thì exit(0) ko cho thực hiện hàm 2 vì nó thoát hết chương trình đúng ko ạ?

HK boy viết 17:44 ngày 01/10/2018

Mình cũng thử với break

break phải dùng với vòng lặp mới hiệu quả, nếu không compiler sẽ báo lỗi.

exit(0) ko cho thực hiện hàm 2 vì nó thoát hết chương trình đúng ko ạ?

Đúng vậy.

Bài liên quan
0