您的位置:首页 > 编程语言 > C语言/C++

c,c++易错点总结之递归,循环

2014-05-22 10:50 302 查看
递归算法应该包括两种情况:递归情况和基底情况。递归情况演变到最后必须答到一个基底,否则出错。

典型的递归问题

(1)、求阶乘

#include<iostream>
using namespace std;

int find (int n){
if(n == 1){
return  1;
}
return find(n-1)*n;
}
int main(){
int n ;
cin>>n;
int t = find(n);
cout<<t;
}

(2)斐波拉契数列的通项

#include<iostream>
using namespace std;

int find (int n){
if(n == 1|| n ==2){
return  1;
}
return find(n-1)+find(n-2);
}
int main(){
int n ;
cin>>n;
int t = find(n);
cout<<t;
}

典型的循环问题

(1)筛法求素数
#include<iostream>
using namespace std;

int main(){
int a[101],i,j;
for(i=1;i<101;i++){
a[i] = 1;
}

for(i=2;i<101;i++){
if(a[i]!=0){
for(j=i+i;j<101;j = j+i){
if(a[j]==0) continue;
if(j%i==0){
a[j] = 0;
}
}
}
}

for(i=2;i<101;i++){
if(a[i]!=0){
cout<<i<<"   ";
}
}
return 0;
}


开根号方法求素数
#include<iostream>
#include<cmath>
using namespace std;
int main(){
int i,j ,a[101];
for(i=2;i<101;i++){
for(j=2;j<=sqrt(i);j++){
if(i%j==0){
break;
}
}
if(j>sqrt(i)){
cout<<i<<"  ";
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息