算法解读 ---- 递归(一)
算法解讀 ---- 遞歸(一)
算法的最重要的是算法設(shè)計(jì)的模型,以及該模型背后的設(shè)計(jì)思想。
定義:
遞歸從編程的角度上理解:遞歸就是一個(gè)過(guò)程或者函數(shù)在其定義中直接或間接調(diào)用自身的一種方法。
遞歸是一種用來(lái)描述問(wèn)題和解決問(wèn)題的基本方法。
特點(diǎn):
通常把一個(gè)大型復(fù)雜的問(wèn)題層層轉(zhuǎn)化為一個(gè)與原問(wèn)題相似的規(guī)模較小的問(wèn)題來(lái)求解。
一般說(shuō)來(lái),遞歸需要有邊界條件、遞歸前進(jìn)段和遞歸返回段、當(dāng)邊界條件不滿足時(shí),遞歸前進(jìn);當(dāng)邊界條件滿足時(shí),遞歸返回。
遞歸算法:
第一步:將原問(wèn)題分解多個(gè)具有類似于原問(wèn)題特性的子問(wèn)題。(遞歸關(guān)系)
第二步:確定一個(gè)或者多個(gè)無(wú)須分解、可直接求解的最小子問(wèn)題(遞歸的終止條件)
舉例:
輸入兩個(gè)整數(shù)x,n,計(jì)算x 的n次冪,結(jié)果對(duì)10000007取模。
問(wèn)題描述:
上述題意:可歸結(jié)為:
1、遞歸關(guān)系:x^n = x*x^(n-1)
2、邊界條件:當(dāng)n=0時(shí)候,x=1
參考代碼:
#include <QCoreApplication>#include<iostream>#define MOD 10000007long long power(int x,int n) {long long ans;if(n==0) ans = 1;else{ans=x*power(x,n-1)%MOD;}return ans%MOD; }using namespace std;int main(int argc, char *argv[]) {QCoreApplication a(argc, argv);int x;int n;cout<<"please Enter x:" <<endl;cin>>x;cout<<"please Enter n:"<<endl;cin>>n;cout<<"the answer is :"<<power(x,n);return a.exec(); }總結(jié)
以上是生活随笔為你收集整理的算法解读 ---- 递归(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: NOIP信息奥赛--1995“同创杯”初
- 下一篇: NOIP信息奥赛--1995“同创杯”初