递归算法:它是一种间接的方法调用本身,直接或。

实施过程:按功能或子程序完成。在函数编写代码或子程序直接或间接拥有被称为。你可以完成递归。

(相同类型的问题,子问题到最小问题有已知条件,然后来求解,然后得到结果逐级返回。

事实上也是一种循环。

最主要体现:小的代码量攻克了很复杂的问题
特点:
1、递归就是方法里调用自身
2、必须有一个明白的递归结束条件。称为递归出口。
3、简洁可是执行效率较低,一般不提倡使用
4、每一层的返回点、局部变量等开辟了栈来存储,递归次数过多easy造成栈溢出。

实例1:求阶乘
C++代码:
#include<iostream>
int factorial(int n);
int main()
{
using namespace std;
int n;
cout << "请输入一个数字:";
cin >> n;
cout << n << "的阶乘为: " << factorial(n) <<endl;
return 0;
}
int factorial(int n)
{
if (n == 1)
return 1;
return n*factorial(n-1);
}
执行结果:

实例2:数制转换

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ3V1Z2xlMjAxMA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

代码:
#include<iostream>
#include<cstring>
void feelTheBase(char *s, int n, int sys);
int main()
{
using namespace std;
char s[60];
int n,sys;
cout << "请输入一个整数:";
cin >> n;
cout << "请输入要转换的进制类型(2,8,16):";
cin >> sys;
feelTheBase(s, n, sys);
cout << n << "转换成" << sys << "进制结果为: " << s <<endl;
return 0;
}
void feelTheBase(char *s, int n, int sys)
{
char bit[] = {"0123456789ABCDEF"};
int len;
if (n == 0)
{
strcpy(s, "");
return;
}
feelTheBase(s, n/sys, sys);
len = strlen(s);
s[len] = bit[n%sys];
s[len+1] = '\0';
}
执行结果:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ3V1Z2xlMjAxMA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">


实例3:列出某个文件夹下全部的子文件夹和文件(还能够用scandir函数更方便)
PHP实现代码:
<?php
function 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);
?>
执行结果:

版权声明:本文博主原创文章,博客,未经同意不得转载。

递归算法的数据结构和算法 C++和PHP达到的更多相关文章

  1. 数据结构与算法 Big O 备忘录与现实

    不论今天的计算机技术变化,新技术的出现,所有都是来自数据结构与算法基础.我们需要温故而知新.        算法.架构.策略.机器学习之间的关系.在过往和技术人员交流时,很多人对算法和架构之间的关系感 ...

  2. 数据结构与算法系列研究七——图、prim算法、dijkstra算法

    图.prim算法.dijkstra算法 1. 图的定义 图(Graph)可以简单表示为G=<V, E>,其中V称为顶点(vertex)集合,E称为边(edge)集合.图论中的图(graph ...

  3. Java数据结构和算法 - 二叉树

    前言 数据结构可划分为线性结构.树型结构和图型结构三大类.前面几篇讨论了数组.栈和队列.链表都是线性结构.树型结构中每个结点只允许有一个直接前驱结点,但允许有一个以上直接后驱结点.树型结构有树和二叉树 ...

  4. Java数据结构和算法 - 递归

    三角数字 Q: 什么是三角数字? A: 据说一群在毕达哥拉斯领导下工作的古希腊的数学家,发现了在数学序列1,3,6,10,15,21,……中有一种奇特的联系.这个数列中的第N项是由第N-1项加N得到的 ...

  5. Python3-Cookbook总结 - 第一章:数据结构和算法

    第一章:数据结构和算法 Python 提供了大量的内置数据结构,包括列表,集合以及字典.大多数情况下使用这些数据结构是很简单的. 但是,我们也会经常碰到到诸如查询,排序和过滤等等这些普遍存在的问题. ...

  6. Java数据结构和算法(四)赫夫曼树

    Java数据结构和算法(四)赫夫曼树 数据结构与算法目录(https://www.cnblogs.com/binarylei/p/10115867.html) 赫夫曼树又称为最优二叉树,赫夫曼树的一个 ...

  7. Python(一)数据结构和算法的20个练习题问答

    数据结构和算法 Python 提供了大量的内置数据结构,包括列表,集合以及字典.大多数情况下使用这些数据结构是很简单的. 但是,我们也会经常碰到到诸如查询,排序和过滤等等这些普遍存在的问题. 因此,这 ...

  8. 为什么我要放弃javaScript数据结构与算法(第三章)—— 栈

    有两种结构类似于数组,但在添加和删除元素时更加可控,它们就是栈和队列. 第三章 栈 栈数据结构 栈是一种遵循后进先出(LIFO)原则的有序集合.新添加的或待删除的元素都保存在栈的同一端,称为栈顶,另一 ...

  9. Pascal数据结构与算法

    第一章 数据结构与算法的引入 1.1 数据结构的基本概念 一. 学习数据结构的意义 程序设计 = 数据结构 + 算法 目前,80%的待处理的数据具有“算法简单”(四则运算.检索.排序等),“对象复杂” ...

随机推荐

  1. Android CTS 结果 testResult.xml 修改 fail 项 为 notExecuted 项 分析

    这两天一直在搞 Android 4.1 CTS ,每次完整跑完一遍后总有几百项 failed,用编辑器手动改为 notExecuted 项后重新跑,有很多项第二次都跑过了. 但是发现直接修改也带来很多 ...

  2. 文档数据库RavenDB-介绍与初体验

    文档数据库RavenDB-介绍与初体验 阅读目录 1.RavenDB概述与特性 2.RavenDB安装 3.C#开发初体验 4.RavenDB资源 不知不觉,“.NET平台开源项目速览“系列文章已经1 ...

  3. QT 多线程程序设计(也有不少例子)

    QT通过三种形式提供了对线程的支持.它们分别是,一.平台无关的线程类,二.线程安全的事件投递,三.跨线程的信号-槽连接.这使得开发轻巧的多线程Qt程序更为容易,并能充分利用多处理器机器的优势.多线程编 ...

  4. C++开源代码项目汇总

    Google的C++开源代码项目 v8  -  V8 JavaScript EngineV8 是 Google 的开源 JavaScript 引擎.V8 采用 C++ 编写,可在谷歌浏览器(来自 Go ...

  5. information_schema模式表介绍 processlist

    在mysql里,我们一般通过show (full)processlist查看当前连接情况,处理各种数据库问题.现在在information_schema模式下,5.5以后增加了processlist表 ...

  6. 纠正一个概念:类就有VMT,各实例不过是共享这个VMT而已

    不是只有实例才有VMT,举个例子,各实例的VMT地址是相同的: Use System.Contnrs; procedure TForm1.BitBtn2Click(Sender: TObject); ...

  7. C++ STL中Map的相关排序操作:按Key排序和按Value排序 - 编程小径 - 博客频道 - CSDN.NET

    C++ STL中Map的相关排序操作:按Key排序和按Value排序 - 编程小径 - 博客频道 - CSDN.NET C++ STL中Map的相关排序操作:按Key排序和按Value排序 分类: C ...

  8. OCP读书笔记(13) - 管理内存

    SGA 1. 什么是LRULRU表示Least Recently Used,也就是指最近最少使用的buffer header链表LRU链表串联起来的buffer header都指向可用数据块 2. 什 ...

  9. oracle 12c 中asm元数据是否有所变化

    详见原文博客链接地址: oracle 12c 中asm元数据是否有所变化

  10. Kafka 协议实现中的内存优化

    Kafka 协议实现中的内存优化 Kafka 协议实现中的内存优化   Jusfr 原创,转载请注明来自博客园 Request 与 Response 的响应格式 Request 与 Response ...