1、1 到 n 的累加
#include<stdio.h>
void main()
{
int i;
int n;
scanf("%d",&n);
int sum( int n);
printf("%d",sum(n));
}
int sum(int n)
{
if(n < 0)
return 0;
if(n == 1)
return 1;
else
return n + sum(n-1);
}
2、递归求阶乘
#include<stdio.h>
double fact(int n);
double factsum(int n);
double main()
{
int n;
scanf("%d",&n);
printf("%lf\n",fact(n));
printf("%lf",factsum(n));
return 0;
}
double fact(int n)
{
if(n == 1 || n == 0)
return 1;
else
return (double)n * fact(n-1);
}
double factsum(int n)
{
int i;
double sum = 0;
for(i = 1;i <= n;i++)
{
sum += fact(i);
}
return sum;
}
3、递归指数函数
#include<stdio.h>
double calc_pow(double,int);
int main()
{
int x,n;
scanf("%d,%d",&x,&n);
printf("x的n次方值为:%lf",calc_pow(x,n));
}
double calc_pow(double x,int n)
{
if(n == 0)
return 1;
return x * calc_pow(x,n-1);
}
4、交集密集函数
#include<stdio.h>
#include<math.h>
double fn(double x,int n);
int main()
{
int x,n;
scanf("%d,%d",&x,&n);
printf("交错幂级函数值为:%lf",fn(x,n));
return 0;
}
double fn(double x,int n)
{
if(n == 1)
return x;
else
return pow(-1,n-1) * pow(x,n) + fn(x,n-1);
}
5、计算Ack函数
#include<stdio.h>
int Ack(int m,int n);
int main()
{
int m,n;
scanf("%d,%d",&m,&n);
printf("%d",Ack(m,n));
}
int Ack(int m,int n)
{
if(m > 0 && n > 0)
return Ack(m-1,Ack(m,n-1));
else if(n == 0 && m > 0)
return Ack(m-1,1);
else if(m == 0)
return n + 1;
}
6、斐波拉契数列
#include<stdio.h>
int f(int n);
int main()
{
int n;
scanf("%d",&n);
printf("%d",f(n));
}
int f(int n)
{
if(n == 0)
return 0;
if(n == 1 || n == 2)
return 1;
else
return f(n-1)+f(n-2);
}
7、十进制转二进制
#include<stdio.h>
void dectobin(int n);
int main()
{
int n;
scanf("%d",&n);
dectobin(n);
return 0;
}
void dectobin(int n)
{
if(n == 0)
printf("0");
else if(n == 1)
printf("1");
else
{
dectobin(n / 2);
printf("%d",n % 2);
}
}
8、按顺序输出整数
#include<stdio.h>
void printdigits(int n);
int main()
{
int n;
scanf("%d",&n);
printdigits(n);
return 0;
}
void printdigits(int n)
{
if(n<10)
{
printf("%d\n",n);
}
else
{
printdigits(n / 10);
printf("%d\n",n % 10);
}
}