zoukankan      html  css  js  c++  java
  • 楼梯算法相关

    阿管百度之行后,记载楼梯算法相关:

    题目大家都知道,大致为:

    一个共有N个台阶的楼梯,从下面走到上面。一次只能迈一个台阶或两个台阶,并且不能后退,走完这个楼梯共有多少种方法?

    1. 递归方法

     1 //php
     2 function up($n)
     3 {
     4     if($n == 2)
     5         return 2;
     6     elseif($n == 1)
     7         return 1;
     8 
     9     return up($n-1)+up($n-2);
    10 }
    11 echo up(10);

    2.非递归方法

    1 function up($n)
    2 {
    3     $a = array(1, 2);
    4     for($i = 3$i <= $n$i++){
    5         $a[$i= $a[$i-1+ $a[$i-2];
    6     }
    7     print_r($a);
    8 }
    9 up(10);

    3.如果说要展示出所有的情况的递归方法:

    1 function up_out($n)
     2 {
     3     if($n == 1)
     4         return array('');
     5     else if($n == 2)
     6         return array('1 1 ', '');
     7     return array_merge(lian(up_out($n-1),''), lian(up_out($n-2), ''));
     8 }
     9 function lian($a1, $a2)
    10 {
    11     foreach($a1 as &$a1_v) {
    12         $a1_v = $a1_v . $a2;
    13     }
    14     return $a1;
    15 }
    16 print_r(up_out(10));

    4.展示所有情况的非递归方法:

     1 function up_out($n)
     2 {
     3     $re = array(array(0), array(''), array('1 1 ', ''));
     4     for($i = 3$i <= $n$i++) {
     5         $re[$i= array_merge(lian($re[$i-1], ''), lian($re[$i-2], ''));
     6     }
     7     return $re;
     8 }
     9 function lian($a1, $a2) {
    10     foreach($a1 as &$a_v) {
    11         $a_v = $a_v . $a2;
    12     }
    13     return $a1;
    14 }
    15 print_r(up_out(10));


  • 相关阅读:
    JAVA访问权限控制[zhuan]
    Netstat简介
    查看cpu性能和磁盘空间
    简单linux查询
    linux 三剑客命令(grep,sed ,awk)
    同步、异步的使用场景及好处
    AJAX中同步和异步的区别和使用场景
    在SpringBoot中用SpringAOP实现日志记录功能
    springboot使用@Aspect实现AOP记录日志讲解
    Spring:获取容器中的Bean
  • 原文地址:https://www.cnblogs.com/liulei/p/1957700.html
Copyright © 2011-2022 走看看