经典算法——递归
来源:互联网 发布:常用的推荐算法 编辑:程序博客网 时间:2024/06/05 17:37
一.递归简介
程序调用自身的编程技巧称为递归( recursion)。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。
二.递归实例
(1).问题描述
一个50级的台阶,从第一层走到第五十层,每次只能跨越一级或两级台阶,问总共有多少种方法实现?(腾讯面试题)
(2).问题分析
层数方法种数具体实现 111 2211,2 33111,12,21 .................... n(n-1)+(n-2)
(3).代码实现
#include<iostream>using namespace std;double go(double n){if (n==1){return 1.0;}else if(n==2){return 2.0;}else{return go(n-1)+go(n-2);}}int main(){double n;cout<<"请输入阶数:"; cin>>n;cout<<go(n)<<endl;return 0;}
问题实例二
(1).问题描述
设计一种方法让一个数反序输出,如输入123456,则输出654321.
(2).代码实现
方法一:
#include<iostream>using namespace std;int main(){int num,wei;cout<<"请输入数字num:";cin>>num;int lastres=0;while(num) //num=12345 { //1 2 3 4 5lastres *=10; //0 50 540 5430 54320wei=num%10; //5 4 3 2 1lastres +=wei; //5 54 543 5432 54321num /=10; //1234 123 12 1 0}cout<<lastres<<endl;return 0;}
方法二(递归实现):
0 0
- 经典算法——递归
- 经典算法——递归求解汉诺塔
- 经典算法学习——非递归遍历二叉树
- TreeView(经典递归算法)
- 递归算法经典列子
- 递归算法经典实例
- 经典递归算法,汉诺塔
- 汉诺塔算法(经典递归)
- 经典汉诺塔递归算法
- 经典递归算法
- 递归算法经典例题
- 经典算法——单链表反转的递归方法和非递归方法
- 一个递归的经典算法
- 递归算法及经典案例
- 递归算法的经典运用
- hanoi塔经典递归算法
- 递归经典算法 汉诺塔问题
- php递归算法经典实例
- ava Lambda表达式入门
- 阿里巴巴IOS开发内推面试
- 红黑树的插入与删除
- 关于java基础--final修饰符、单例模式、抽象类以及接口类
- 华为总裁任正非管理幽默语录,深入浅出,揭示大道理
- 经典算法——递归
- C# 中的委托和事件
- 腐蚀与膨胀
- UBUNTU 下编译安装opencv 2.3.1
- 多态在 Java 和 C++ 编程语言中的实现比较
- Linux cut 命令
- HDU 1237 简单计算器
- 无刷双馈轴带发电机
- HDU oj 水果 题目1263