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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

算法递归简论

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

【0】README

0.1) 本文總結于 數據結構與算法分析,旨在了解設計 遞歸程序 的相關法則和技巧;
0.2) 我記憶尤新的一點是: 凡事可以用循環代替的遞歸函數,它就不是一個好的遞歸函數,對我幫助很大;(設計完遞歸函數后,可以檢驗下,該遞歸函數是否可以用循環代替)


【1】 遞歸簡論

1.1)當編寫遞歸例程的時候,關鍵是要牢記遞歸的四條基本法則-Principle:

  • P1)基準情形:必須總是有某些基準情形,它無需遞歸就能解除;
  • P2)不斷推進:對于那些需要遞歸求解的情形,每一次遞歸調用都必須要是求解狀況朝接近基準情形的方向前進;
  • P3)設計法則:假設所有的遞歸調用都能運行;
  • P4)合成效益法則(compound interest rule):在求解一個問題的同一實例時, 切勿在不同的遞歸調用中作重復性工作 ;

【2】看三個荔枝:

  • 2.1)荔枝1
    代碼參見 https://github.com/pacosonTang/dataStructure-algorithmAnalysis/blob/master/chapter1/p6.c)
    source code at a glance :
#include<stdio.h>/* 滿足F(0)=0 且 F(X)=2F(X-1)+X^2 */int F(int);int main() { for(int i = 0; i <= 10; i++)printf("F(%d) = %-4d\n",i,F(i)); }int F(int x) {if(x == 0)return 0;else return 2 * F(x - 1) + x * x; }


  • 2.2)荔枝2(一個錯誤的遞歸函數)
    source code at a glance :

  • 2.3)荔枝3

(代碼參見 https://github.com/pacosonTang/dataStructure-algorithmAnalysis/blob/master/chapter1/p8.c)
source code at a glance :

#include<stdio.h>/*打印整數的遞歸例程, 如1234 打印為 1 2 3 4*/ void printout(unsigned int N);main() { int temp = 1234554;printf("%d 可分解為 ",temp); printout(temp);printf("\n"); }void printout(unsigned int N) {if(N >= 10)printout(N / 10);printf(" %d",N % 10); }


總結

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

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