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);
    }
    我们唯一能够控制的是自己的脾气和努力
  • 相关阅读:
    基于opencv网络摄像头在ubuntu下的视频获取
    VHDL学习札记:library and Package
    HLS入门收集(1)
    Windows下zlib库和libPng库的编译和使用
    FPGA培训体会 江苏大学 自动化 许一航
    FPGA学习体会
    FPGA培训体会
    2016年上海V3学院寒假班FPGA/SOC培训收获
    上海V3学院FPGA培训感想 ——重庆理工大学叶钧
    上海招聘FPGA讲师(专兼职均可)
  • 原文地址:https://www.cnblogs.com/itall/p/10878824.html
Copyright © 2011-2022 走看看