遞迴演算法的基本套路
阿新 • • 發佈:2018-12-14
最近寫演算法作業發現自己還不是很明白遞迴演算法的套路,因此在此記錄一下基本方法: 在寫之前,確認兩點: 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; }