Câu 1: Viết hàm đệ quy tính số hạng thứ n của dãy Fibo
#include<stdio.h>
#include<conio.h>
long Fibo(int n)
{
if(n == 0)
return 0;
if(n == 1)
return 1;
return Fibo(n – 1) + Fibo(n – 2);
}
int main()
{
int n;
printf(“\nNhap n: “); scanf(“%d”, &n);
long kq = Fibo(n);
printf(“\nFibo = %d”, kq);
getch();
return 0;
}
Câu 2: Tính S(n) = 1 + 2 + 3 + … + n
#include<stdio.h>
#include<conio.h>
long Tong(int n)
{
if(n == 0)
return 0;
return Tong(n – 1) + n;
}
int main()
{
int n, S;
printf(“\Nhap n = “); scanf(“%d”, &n);
S = Tong(n);
printf(“S = %d”, S);
getch();
return 0;
}
Câu 3: Hãy cài đặt hàm đệ quy tính T(n) = n! = 1 x 2 x 3 x … x n. Trong đó T(0) = 1
#include<stdio.h>
#include<conio.h>
long GiaiThua(int n)
{
if(n == 0)
return 1;
return GiaiThua(n – 1) * n;
}
int main()
{
int n, T;
printf(“\Nhap n = “); scanf(“%d”, &n);
T = GiaiThua(n);
printf(“T = %d”, T);
getch();
return 0;
}
Câu 4: Hàm đệ quy tính hàm mũ X^n
#include<stdio.h>
#include<conio.h>
int mu(int a,int b)
{
if(b==1)
return a;
else
return mu(a,b-1)*a;
}
int main()
{
int n,x;
printf(“nhap so “);
scanf(“%d”,&n);
printf(“so mu “);
scanf(“%d”,&x);
printf(“%d”,mu(n,x));
getch();
return 0;
}
Câu 5: Viết chương trình tìm USCLN và BSCNN của a và b sử dụng đệ quy
* Chuong trinh tim uoc chung lon nhat (USCLN)
* va boi so chung nho nhat (BSCNN) cua 2 so a và b
* @author viettuts.vn
#include<stdio.h>
/**
* Tim uoc so chung lon nhat (USCLN)
*/
int USCLN(int a, int b) {
if (b == 0) return a;
return USCLN(b, a % b);
}
/**
* Tim boi so chung nho nhat (BSCNN)
*/
int BSCNN(int a, int b) {
return (a * b) / USCLN(a, b);
}
/**
* ham main
*/
int main() {
int a, b;
printf(“Nhap so nguyen duong a = “);
scanf(“%d”, &a);
printf(“Nhap so nguyen duong b = “);
scanf(“%d”, &b);
// tinh USCLN cua a và b
printf(“\nUSCLN cua %d va %d la: %d”, a, b, USCLN(a, b));
// tinh BSCNN cua a và b
printf(“\nUSCLN cua %d va %d la: %d”, a, b, BSCNN(a, b));
}
Câu 6: Bài toán tháp hà nội đệ quy
#include<stdio.h>
void TOH(int num, char x, char y, char z);
int main() {
int num;
printf(“\nNhap so dia: “);
scanf(“%d”, &num);
TOH(num – 1, ‘A’, ‘B’, ‘C’);
return (0);
}
void TOH(int num, char x, char y, char z) {
if (num > 0) {
TOH(num – 1, x, z, y);
printf(“\n%c -> %c”, x, y);
TOH(num – 1, z, y, x);
}
}
Câu 7: Viết hàm đệ quy tính số hạng thứ n của dãy Fibo
#include<stdio.h>
#include<conio.h>
long Fibo(int n)
{
if(n == 0)
return 0;
if(n == 1)
return 1;
return Fibo(n – 1) + Fibo(n – 2);
}
int main()
{
int n;
printf(“\nNhap n: “); scanf(“%d”, &n);
long kq = Fibo(n);
printf(“\nFibo = %d”, kq);
getch();
return 0;
}