当前位置: 首页 > news >正文

递归经典问题详解

1 递归需要满足的两个条件:

(1)有反复执行的过程(调用自身);

(2)有跳出反复执行过程的条件(递归出口)。

2 递归经典例子:

(1) 阶乘

n!=n*(n-1)*(n-2)*...1(n>0)

int recursive(int n)
{
    int result=0;
    if(n==1)
    return 1;
    result=n*recursive(n-1);
    return result;
}
(2) 汉诺塔问题

void  hanoi(int n,char a,char b,char c)
{
    if(n==1)
     cout<<" move disk "<<n<<" from "<<a<<" to "<<c<<endl;
   else
 {  hanoi(n-1,a,c,b);
    cout<<" move disk "<<n<<" from "<<a<<" to "<<c<<endl;
    hanoi(n-1,b,a,c);
 }

}

(3)全排列问题

n个不同元素中任取mm≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。

  如1,2,3三个元素的全排列为:

  1,2,3

  1,3,2

  2,1,3

  2,3,1

  3,1,2

  3,2,1 

void CalAllPermutation(string str,int from,int to)
{
    if(to<0)
    return ;
    if(from==to)
    {
    for(char& m:str)
    cout<<m;
    cout<<endl;
    }
    else
    {
        for(int j=from;j<=to;j++)
        {
            swap(str[j],str[from]);
            CalAllPermutation(str,from+1,to);
            swap(str[j],str[from]);
        }
    }
}
(4)裴波拉契数列

long Fib(int n)
{
    if(n==0)
    return 0;
      if(n==1)
    return 1;
    if(n>1)
    return Fib(n-1)+Fib(n-2);
    
};






转载于:https://www.cnblogs.com/muyangshaonian/p/9650539.html

相关文章:

  • 讲下Spring框架
  • 视图间坐标转换
  • Spring与SpringMVC的区别
  • php关于的用法
  • Spring与SpringBoot的关系
  • Java网络编程(模拟浏览器访问Tomcat服务器)
  • Spring 、Spring Boot 和 Spring Cloud 的关系
  • xmpp 环境配置
  • SpringBoot常用注解
  • 二OpenStack 安装 Identity Service - Keystone
  • Spring IOC和AOP
  • Bean生命周期
  • Spring事务及事务传播
  • [转]优秀的程序员不会觉得累成狗是一种荣耀
  • 一种SPA(单页面应用)架构
  • JavaScript 如何正确处理 Unicode 编码问题!
  • 【刷算法】从上往下打印二叉树
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • Android Volley源码解析
  • C# 免费离线人脸识别 2.0 Demo
  • HashMap剖析之内部结构
  • IOS评论框不贴底(ios12新bug)
  • IP路由与转发
  • JavaScript 一些 DOM 的知识点
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • node.js
  • pdf文件如何在线转换为jpg图片
  • Redis 中的布隆过滤器
  • Xmanager 远程桌面 CentOS 7
  • Yii源码解读-服务定位器(Service Locator)
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 分布式事物理论与实践
  • 基于 Babel 的 npm 包最小化设置
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • MyCAT水平分库
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • (2)STL算法之元素计数
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (Java数据结构)ArrayList
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .NET DataGridView数据绑定说明
  • .NET的数据绑定
  • .NET设计模式(11):组合模式(Composite Pattern)
  • .vollhavhelp-V-XXXXXXXX勒索病毒的最新威胁:如何恢复您的数据?
  • @Import注解详解
  • @vue/cli脚手架
  • [<死锁专题>]
  • [20190416]完善shared latch测试脚本2.txt
  • [Angular] 笔记 20:NgContent
  • [Asp.net mvc]国际化
  • [BUAA软工]第一次博客作业---阅读《构建之法》
  • [BZOJ4010]菜肴制作
  • [C/C++] C/C++中数字与字符串之间的转换