Anh chị nào siêu bên phần đệ qui qui hồi thì giúp em làm rõ cả về thuận toán lẫn sơ đồ khối đi,vì em mới học lên phần đệ qui nâng cao,khó quá.gặp toàn đệ qui có chứa vòng lặp,chạy loạn tung cả lên ngồi nghĩ sao cho ra.đã vậy mà hỏi thầy cô thì ...(not available)
e mới k8 thôi.mong a chị giúp em làm rõ phần này.vì e bên khoa học máy tính mà nghe nói lập trình cơ bản phải vững mới được nên em rất muốn chỉ cho rõ cho nền tảng sau này
còn nếu thấy e nói chung quá thì mong anh chị nhiệt tình làm rõ giúp e 2 bài này
em cũng đã search google nhưng vẫn chưa hiểu,nó cứ lơ mơ với cái đám vừa có for trong đám đệ qui lung tung này)
1. Viết hàm nhận vào hai số n và m, xuất ra màn hình tất cả các số có n chữ số
trong hệ cơ số m
source code của thầy:
2/Bài toán tháp Hà Nội(e cũng đã search,wiki cũng đã giải thích nhưng cứ lơ mơ thế nào,xem hình chạy chạy thì lại càng mơ hồ về qui luật truy hồi của nó)
bài giải thì thấy có 2 code đều chạy đúng,chắc nó cùng nguyên tắc:
Mong anh chị chỉ rõ giúp em bằng cách nào đó.thank trước
(nếu em ngu quá thì chịu nhưng a chị ráng giúp e chứ e vốn hay khó chịu với cái gì mà e ko giải quyết rõ,thường thì e mất quá thời gian vào nó,mà thời gian e cũng bận qua)

còn nếu thấy e nói chung quá thì mong anh chị nhiệt tình làm rõ giúp e 2 bài này

1. Viết hàm nhận vào hai số n và m, xuất ra màn hình tất cả các số có n chữ số
trong hệ cơ số m
source code của thầy:
PHP Code:
void print_co_so(int n, int co_so, int hien_tai = 0, int temp = 0){
if (hien_tai == n){
printf("%d\n", temp);
return;
}
for (int i = (hien_tai ? 0 : 1); i < co_so; i++){
temp = (temp) * 10 + i;
print_co_so(n, co_so, hien_tai + 1, temp);
temp = temp/10;
}
}
bài giải thì thấy có 2 code đều chạy đúng,chắc nó cùng nguyên tắc:
PHP Code:
#include <stdio.h>
void chuyen(int sodia, char CotNguon, char CotDich, char CotTG)
{
if (sodia>0)
{
chuyen(sodia-1, CotNguon, CotTG, CotDich);
printf("%c --> %c\n",CotNguon,CotDich);
chuyen(sodia-1, CotTG, CotDich, CotNguon);
}
}
int main()
{
char CotNguon,CotDich,CotTG;
int n;
printf("nhap n:");
scanf("%d",&n);
chuyen(n,'A','C','B');
return 0;
}
PHP Code:
#include <stdio.h>
int n;
char A={'A'}, B={'B'}, C={'C'};
void Move(int n, char A, char B, char C)
{
if(n==1)
printf("%c --> %c\n", A, B);
else{
Move(n-1, A, C, B); //chuyen tu TG-D,
Move(1, A, B, C);
Move(n-1, C, B, A);
}
}
int main(){
scanf("%d",&n);
Move(n, A, B, C);
return 0;
}
(nếu em ngu quá thì chịu nhưng a chị ráng giúp e chứ e vốn hay khó chịu với cái gì mà e ko giải quyết rõ,thường thì e mất quá thời gian vào nó,mà thời gian e cũng bận qua)
Comment