算法解读 ---- 递归(一)
生活随笔
收集整理的這篇文章主要介紹了
算法解读 ---- 递归(一)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
算法解讀 ---- 遞歸(一)
算法的最重要的是算法設計的模型,以及該模型背后的設計思想。
定義:
遞歸從編程的角度上理解:遞歸就是一個過程或者函數在其定義中直接或間接調用自身的一種方法。
遞歸是一種用來描述問題和解決問題的基本方法。
特點:
通常把一個大型復雜的問題層層轉化為一個與原問題相似的規模較小的問題來求解。
一般說來,遞歸需要有邊界條件、遞歸前進段和遞歸返回段、當邊界條件不滿足時,遞歸前進;當邊界條件滿足時,遞歸返回。
遞歸算法:
第一步:將原問題分解多個具有類似于原問題特性的子問題。(遞歸關系)
第二步:確定一個或者多個無須分解、可直接求解的最小子問題(遞歸的終止條件)
舉例:
輸入兩個整數x,n,計算x 的n次冪,結果對10000007取模。
問題描述:
上述題意:可歸結為:
1、遞歸關系:x^n = x*x^(n-1)
2、邊界條件:當n=0時候,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(); }總結
以上是生活随笔為你收集整理的算法解读 ---- 递归(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NOIP信息奥赛--1995“同创杯”初
- 下一篇: NOIP信息奥赛--1995“同创杯”初