递归基础练习题

2013-05-30

递归算法的定义:如果一个对象的描述中包含它本身,我们就称这个对象是递归的,这种用递归来描述的算法称为递归算法。递归算法就是一个函数通过不断对自己的调用而求得最终结果的一种思维巧妙但是开销很大的算法。

玩一次9连环吧,你会深深记住现实中的递归算法。

例1. 求1+2+3+……+n的值
int sum(int a,int b)
{
if(b==a)return a;
return a+sum(a+1,b);
}

例2. 利用递归方法求5!。

递归公式:fn=fn_1*4!

源代码:

#include "stdio.h"

main()
{

int i;

int fact();

for(i=0;i<5;i++)
printf("\40:%d!=%d\n",i,fact(i));
}

int fact(j)
int j;
{
int sum;

if(j==0)
sum=1;
else
sum=j*fact(j-1);
return sum;
}

例3. 求!1+!2+!3+……+!n的值

#include "stdafx.h"
#include

int getmul(int n){//递归求阶乘
int sum;
int temp = 1;
if(n<=0){
printf("输入的数据错误,不能小于0!\n");
return -1;
}else{
if(n ==1 ){ sum = 1; return sum;}
else {
sum =n * getmul(n-1);
return sum;
}
}
}

int getSum(int n){//递归求和
int sum;
if(n==0){
sum =0;
}else{
sum = getmul(n) + getSum(n-1);
}
return sum;
}

void print(int n){//打印
for(int i=1; i <=n; i ++){
if(i==n) printf("%d!=",i);
else printf("%d!+",i);
}
}

int main(int argc, char* argv[])
{
int a = 10;//此为求1到10的阶乘只和
print(a);
printf("%d\n",getSum(a));//调用
return 0;
}

分类:编程 | 标签: |

相关日志

评论被关闭!