日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

基础算法 —— 递归算法

發布時間:2025/3/17 编程问答 8 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基础算法 —— 递归算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【概述】

  • 遞歸算法:一種通過重復將問題分解為同類的子問題而解決問題的方法。
  • 適用問題:解決結構自相似的問題。即:構成原問題的子問題與原問題在結構上相似,可以用類似的方法解決。
  • 特點:反復執行、結束反復執行的條件
  • 缺點:占用大量內存且不易閱讀
  • 【兩個問題】

  • 遞歸邊界條件(遞歸終止條件):確定遞歸到何時終止,或者說,直接有解的情況。
  • 遞歸模式(遞歸體):大問題是如何分解為小問題的。?
  • 注:遞歸終止條件通常就是得出最小問題的解,并返回給他的調用者。

    【間接遞歸與直接遞歸】

    ? ? 1.直接遞歸調用:就是在函數f中直接調用函數f本身

    ????2.間接遞歸調用:就是在函數f1中調用另外一個函數f2,而該函數f2又調用了函數f1

    【經典應用】

    1.遞歸求和

    void Sum(int n) {if(n>1)return n+Sum(n-1);elsereturn 1; }

    2.遞歸求階乘

    階乘的遞歸公式:

    int F(int n) { if(n==0)return 1; return n*F(n-1); }

    3.斐波那契數列遞歸實現

    int Fibonacci(int n) {if(n==1)return 1;if(n==2)return 1;return Fibonacci(n-1)+Fibonacci(n-2); }

    關于斐波那契數列:點擊這里

    4.漢諾塔問題的遞歸實現

    #include<stdio.h> void move(int n, char x, char y, char z)//將n個圓盤從x柱子上借助y柱子移動到z柱子上 {if(n == 1)printf("圓盤編號 %d :從 %c 移動到 %c\n",n,x,z);else{move(n-1,x,y,z);printf("圓盤編號 %d:從 %c 移動到 %c\n",n,x,z);move(n-1,y,x,z);}} int main() {int n;//n代表圓盤的個數/*A,B,C分別代表三個柱子*/char ch1 = 'A';char ch2 = 'B';char ch3 = 'C';printf("請輸入圓盤的個數:");scanf("%d",&n);move(n,ch1,ch2,ch3);return 0; }

    關于漢諾塔問題:點擊這里

    【例題】

    1.普通

  • 數的計算(洛谷-P1028):點擊這里
    同題:數的計數(信息學奧賽一本通-T1316):點擊這里
  • 放蘋果(信息學奧賽一本通-T1206):點擊這里
  • 鳴人的影分身(信息學奧賽一本通-T1303):點擊這里
  • 進制轉換(洛谷-P1017):點擊這里
  • Pell數列(信息學奧賽一本通-T1202):點擊這里
  • 黑白棋子的移動(信息學奧賽一本通-T1327):點擊這里
  • 判斷元素是否存在(信息學奧賽一本通-T1211):點擊這里
  • 漢諾塔問題(信息學奧賽一本通-T1205):點擊這里
  • 分解因數(信息學奧賽一本通-T1200):點擊這里
  • 因子分解(信息學奧賽一本通-T1210):點擊這里
  • 分數求和(信息學奧賽一本通-T1209):點擊這里
  • 求最大公約數問題(信息學奧賽一本通-T1207):點擊這里
  • 2.其他

  • 火柴棒等式(洛谷-P1149)(打表遞歸):點擊這里
  • 逆波蘭表達式(信息學奧賽一本通-T1198)(atof()函數的使用):點擊這里
  • 選數(洛谷-P1036)(遞歸+素數判斷):點擊這里
  • 冪次方(洛谷-P1010)(遞歸+整數分解):點擊這里
    同題:2的冪次方表示(信息學奧賽一本通-T1208):點擊這里
  • Xor Sum(AtCoder-2272)(map+打表):點擊這里
  • 石頭剪刀布(2019牛客寒假算法基礎集訓營 Day6-F)(字典序):點擊這里
  • Formurosa(CF-217C)(位運算):點擊這里
  • fraction(HDU-6624)(數學推導+遞歸):點擊這里
  • 總結

    以上是生活随笔為你收集整理的基础算法 —— 递归算法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。