最近写算法作业发现自己还不是很明白递归算法的套路,因此在此记录一下基本方法:
在写之前,确认两点:
1.递推表达式
2.边界条件
然后根据不同取值情况利用if-else判断语句进行递归,递归体现在return语句本身就嵌套了要递归的函数。
代码示例:
#include<iostream>
using namespace std;
int sequence(int n);
int sequence_sum(int n);
int main(){
int n;
cin>>n;
cout<<"第"<<n<<"项为:"<<sequence(n)<<endl;
cout<<"前"<<n<<"项和为:"<<sequence_sum(n)<<endl;
return 0;
}
int sequence(int n){
//返回具体值
if(n==1){
return 1;
}
//递归式
else if(n%2==0){
return 1+sequence(n/2);
}
else{
return sequence((n-1)/2)+sequence((n-1)/2+1);
}
}
int sequence_sum(int n){
long long sum=0;
for(int i=n;i>=1;i--){
sum+=sequence(i);
}
return sum;
}