zoukankan      html  css  js  c++  java
  • 递归(Recursion)

      递归是一种非常常用的算法,分为“递”和“归”两个步骤。满足递归算法有三个条件:1.一个问题,可以分解为子问题;2.该问题,与分解后的子问题,解决思路一致;3.存在终止条件。案例演示:假设有n个台阶,每次可以跨1个台阶,或者2个台阶。问:走完这n个台阶共有多少中走法?

      解答思路:根据第一步的走法,可以分为两类

      1.第一步走1个台阶

      2.第一步走2个台阶

      3.则n个台阶的走法,等于第一步先走1个台阶后,n-1个台阶的走法;加上第一步先走2个台阶后,n-2个台阶的走法

      4.用递推公式表示:f(n)=f(n-1)+f(n-2)

      5.终止条件:如果最后剩下1个台阶,则只有1种走法:if(n==1) return1;如果最后剩下2个台阶,则有2中走法:if(n==2) return 2

      代码:

      

    /**
    * 递归求解:
    * 假设有n个台阶,每次可以跨1个台阶,或者2个台阶。请问走完n个台阶共有多少种走法?
    *
    * 思路:
    * 1.根据第一步走法,分为两类:
    * 1.1.第一步走1个台阶
    * 1.2.第一步走2个台阶
    * 1.3.则n个台阶的走法,等于第一步先走1个台阶后,n-1个台阶的走法;加上先走2个台阶后,n-2个台阶的走法
    * 1.4.用公式表示:f(n)=f(n-1)+f(n-2)
    * 1.5.终止条件:
    * 1.5.1.如果最后剩下1个台阶,则只有1中走法:if(n==1) return 1
    * 1.5.2.如果最后剩下2个台阶,则有两种走法:if(n==2) return 2
    */
    public static int stepsNum(int n){
    if(n==1) return 1;
    if(n==2) return 2;

    return stepsNum(n-1)+stepsNum(n-2);
    }
    我们唯一能够控制的是自己的脾气和努力
  • 相关阅读:
    查看oracle死锁进程并结束死锁
    用windows 定时任务执行kettle的ktr文件,以及问题处理
    Sentinel 高可用流量管理框架
    python
    Excel Vlookup用法和常见报错#REF! #Value!
    OutLook从excel导入联系人
    配置windows server多个用户同时使用一个账户远程服务器
    从Sql Server转战Oracle 之 变量声明
    数据库tempdb的事物日志已满,原因为“ACTIVE_TRANSACTION”
    Chapter 2
  • 原文地址:https://www.cnblogs.com/itall/p/10878824.html
Copyright © 2011-2022 走看看