黑马程序员技术交流社区
标题:
递归练习
[打印本页]
作者:
lorem
时间:
2016-2-26 19:06
标题:
递归练习
数字累加/素数累加/示例代码
#include <iostream>
int sum(int);
int judge(int);
int sumOfPlain(int);
int main(int argc, char** argv) {
//printf("%d\n",sum(3));
//printf("%d\n",judge(5));
printf("%d\n",sumOfPlain(10)); //2 3 5 7
return 0;
}
int sum(int a){
if(a<=0){
return 0;
}
else if(a==1){
return 1;
}
else
return a+sum(a-1);
}
/**
判断是否是 素数,是的话,就返回它本身否则就返回0
*/
int judge(int a){
//有三种方式第一种是:一直到a-1
//验证过是到 a/2 但是 由于不存在 一半儿的这种情况,所以我们不妨多加一个数儿
//再有就是 一直除到开方,的这个范围。如果还是除不开,那就除不开了。
for(int i=2;i<a/2+1;i++){
if(a%i==0){
return 0;
}
}
return a;
}
int sumOfPlain(int a){
int afterJ = judge(a);
if(a<=1){
return 0;
}
else if(a==2){
return 2;
}
else{
return afterJ+sumOfPlain(a-1);
}
}
关于递归:
递归的优点:给某些问题提供了最简单算法:汉诺塔,二分查找,快速排序,斐波那契数列。缺点:(如果没有合适的出口)将会很快耗尽计算机的资源
作者:
小小笑笑
时间:
2016-2-26 19:44
厉害厉害
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2