Heim Backend-Entwicklung PHP-Tutorial 数据结构与算法之递归算法 C++和PHP实现

数据结构与算法之递归算法 C++和PHP实现

Jun 23, 2016 pm 01:46 PM

递归算法:就是一种直接或间接调用自身的算法。

实现过程:通过函数或者子过程来完成,在函数或者子过程中编写代码直接或间接的调用自己,即可完成递归操作。(相同类别的问题,把问题层层转换为规模缩小的子问题到最小问题有 已知条件,然后 来求解,然后得到结果逐级返回。其实也是一种循环。)

最主要体现: 小的代码量解决了非常复杂的问题

特点:

1、递归就是方法里调用自身

2、必须有一个明确的递归结束条件,称为递归出口。

3、简洁但是运行效率较低,一般不提倡使用

4、每一层的返回点、局部变量等开辟了栈来存储,递归次数过多容易造成栈溢出。


实例1:求阶乘

C++代码:

#include<iostream>int factorial(int n);int main(){    using namespace std;    int n;    cout &gt; n;    cout   <p class="sycode">   运行结果:  </p>  <p class="sycode">      <br>  </p>  <p class="sycode">   实例2:数制转换  </p>  <p class="sycode">      <br>  </p>  <p class="sycode">   代码:  </p>  <pre name="code" class="sycode">#include<iostream>#include<cstring>void feelTheBase(char *s, int n, int sys);int main(){    using namespace std;    char s[60];    int n,sys;    cout &gt; n;    cout &gt; sys;    feelTheBase(s, n, sys);    cout   <p class="sycode">   运行结果:  </p>  <p class="sycode">      <br>  </p>  <p class="sycode">   <br>  </p>  <p class="sycode">   实例3: 列出某个目录下所有的子目录和文件(还可以用 scandir函数更方便 )  </p>  <p class="sycode">   PHP实现代码:  </p>  <pre name="code" class="sycode"><?phpfunction rec($dir, $lev=0){    $dh = opendir($dir); while (($file = readdir($dh)) != false) {  if ($file == '.' || $file == '..') {   continue;  }  if (is_dir($dir.'/'.$file)){      $arr = explode("/",$dir.'/'.$file);   $lev = count($arr)-3;      echo str_pad('',$lev, "--")."目录".$file."<br/>";   rec($dir.'/'.$file, $lev+1);  }else {   echo str_pad('',$lev, "--").$file."<br>";     } }  closedir($dh);}$dir = "./";rec($dir);?&gt;
Nach dem Login kopieren

运行结果:



Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

11 beste PHP -URL -Shortener -Skripte (kostenlos und Premium) 11 beste PHP -URL -Shortener -Skripte (kostenlos und Premium) Mar 03, 2025 am 10:49 AM

11 beste PHP -URL -Shortener -Skripte (kostenlos und Premium)

Einführung in die Instagram -API Einführung in die Instagram -API Mar 02, 2025 am 09:32 AM

Einführung in die Instagram -API

Arbeiten mit Flash -Sitzungsdaten in Laravel Arbeiten mit Flash -Sitzungsdaten in Laravel Mar 12, 2025 pm 05:08 PM

Arbeiten mit Flash -Sitzungsdaten in Laravel

Vereinfachte HTTP -Reaktion verspottet in Laravel -Tests Vereinfachte HTTP -Reaktion verspottet in Laravel -Tests Mar 12, 2025 pm 05:09 PM

Vereinfachte HTTP -Reaktion verspottet in Laravel -Tests

Curl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIs Curl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIs Mar 14, 2025 am 11:42 AM

Curl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIs

Erstellen Sie eine React -App mit einem Laravel -Back -Ende: Teil 2, reagieren Erstellen Sie eine React -App mit einem Laravel -Back -Ende: Teil 2, reagieren Mar 04, 2025 am 09:33 AM

Erstellen Sie eine React -App mit einem Laravel -Back -Ende: Teil 2, reagieren

12 Beste PHP -Chat -Skripte auf Codecanyon 12 Beste PHP -Chat -Skripte auf Codecanyon Mar 13, 2025 pm 12:08 PM

12 Beste PHP -Chat -Skripte auf Codecanyon

Benachrichtigungen in Laravel Benachrichtigungen in Laravel Mar 04, 2025 am 09:22 AM

Benachrichtigungen in Laravel

See all articles