PDA

View Full Version : Tổng hợp các bài toán về đệ quy!!!



LieuKyThien
09-05-2009, 09:06 PM
Bắt đầu sẽ là: tính 1+2+3+...+n:


int tong(int n)
{
if(n==1) return 1;
return n+tong(n-1);
}
Tính 1^2+2^2+3^2+...+n^2:


int mu(int n)
{
if(n==1) return 1;
return mu(n-1)+n*n;
}
Tính 1+1/2+1/3+...+1/n:


float thuong(float n)
{
if(n==1)
return 1;
return 1/n+thuong(n-1);
}
Tính 1/2+1/4+...+1/2n:


float thuong(float n)
{
if(n==1)
return 0.5;
return thuong(n-1)+1/(2*n);
}
Tính 1+1/3+1/5+...+1/(2n+1):


float thuong(float n)
{
if(n==1) return 1;
return thuong(n-1)+1/(2*n+1);
}
Tính 1/2+2/3+3/4+...+n/(n+1):


float thuong(float n)
{
if(n==1)
return 0.5;
return thuong(n-1)+n/(n+1);
}
Tính 1/2+3/4+5/6+...+(2n+1)/2n+2):


float thuong(float n)
{
if(n==1)
return 0.5;
return thuong(n-1)+(2*n+1)/(2*n+2);
}
Tính 1*2*3*...*n:


int tich(int n)
{
if(n==1)
return 1;
return tich(n-1)*n;
}
Tính Tinh X^n:


int mu(int x,int n)
{
if(n==1) return x;
if(n<0) return mu(x,n+1)*1/x;
return mu(x,n-1)*x;
}
Tính 1+1*2+(1*2*3)+(1*2*3*4)+...+(1*2*3*...*n):
int tich(int n)


int tich(int n)
{
if(n==1) return 1;
return tich(n-1)*n;
}
int tong(int n)
{
if(n==1) return 1;
return tong(n-1)+tich(n-1)*n;
}
Tính x+x^2+x^3+...+x^n:


int mu(int x,int n)
{
if(n==0) return 1;
return mu(x,n-1)*x;
}
int tong(int x,int n)
{
if(n==0) return x;
return tong(x,n-1)+mu(x,n-1)*x;
}
Tính 1+1/(1+2)+1/(1+2+3)+...+1/(1+2+...n):


float tong(float n)
{
if(n==1) return (float)1;
return tong(n-1)+n;
}
float thuong(float n)
{
if(n==1) return (float)1;
return thuong(n-1)+1/(tong(n-1)+n);
}
Tính x+(x^2)/2!+(x^3)/3!+...+(x^n)/n! :


float giaithua(float n)
{
if(n==1) return (float)1;
return giaithua(n-1)*n;
}
float mu(float x,float n)
{
if(n==1) return x;
return mu(x,n-1)*x;
}
float thuong(float x,float n)
{
if(n==1) return x;
return thuong(x,n-1)+(mu(x,n-1)*n)/(giaithua(n-1)*n);
}
Tính 1+(x^2)/2!+(x^4)/4!+...+(x^2n)/2n! :


float giaithua(float n)
{
if(n==0) return (float)1;
return giaithua(n-1)*n;
}
float mu(float x,float n)
{
if(n==0) return (float)1;
return mu(x,n-1)*x*x;
}
float thuong(float x,float n)
{
if(n==0) return (float)1;
return thuong(x,n-1)+((giaithua(2*n-1)*2*n)/(mu(x,n-1)*x*x));
}
Tính 1*2+2*3+...+(n-1)*n


#include<stdio.h>
#include<conio.h>
int tong(int n)
{
if(n==2) return 2;
return tong(n-1)+n*(n-1);
}
void main()
{
int n;
scanf("%d",&n);
printf("%d",tong(n));
getch();
}
Ngoài ra còn vô vàn những bài toán về đệ quy nữa, nếu bạn nào quan tâm có thể liên lạc với mình qua yahoo: thanh_phuong3687@yahoo.com. Have fun!!:D

LieuKyThien
12-05-2009, 09:08 AM
thêm một bài về đệ quy nữa đây:
Tính 1^1+2^2+3^3+4^4+...n^n :


#include<stdio.h>
#include<conio.h>
int mu(int n,int m)
{
if(m==1) return n;
return n*mu(n,m-1);
}
int tong(int n)
{
int m;
m=n;
if(n==1) return 1;
if(m==1) return 1;
return mu(n,m)+tong(n-1);
}
void main()
{
clrscr();
int n,m;
scanf("%d",&n);
m=n;
printf("%d",tong(n));
getch();
}