#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;
}
Cách dừng quay lui khi in được cấu hình đầu tiên
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).
1 Like
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 >:)
Dùng exit thì được :v. @@ Mình cảm ơn
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 ạ?
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.
Đúng vậy.
1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?