学习递归循环

 #include <iostream>
 

    using namespace std;
 
/*
题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
*/
 
//0 1 2 3
//f(n) = (最后一次跳一级台阶有多少种方法) + (最后一次跳两级台阶有多少种方法)
//即:
//f(n) = f(n - 1) + f(n - 2)
class Solution 
{
public:
 int jumpFloor(int number) 
 {
  if (number <= 1)
  {
   return number;
  }
  int first = 1;
  int second = 1;
  while (--number)
  {
   int tmp = second;
   second += first;
   first = tmp;
  }
  return second;
 }
};

     
int main()
{
 Solution s1;
 for (int i = 0; i < 10; i++)
 {
  cout << s1.jumpFloor(i) << endl;
 }
 return 0;
}
//https://github.com/HonestFox/BrushQuestion

以4个台阶为例子

那么有(1,1,1,1)(1,2,1)(1,1,2)(2,1,1)(2,2)5种 走法

main()测试中给出了 10阶内的走发分别有多少种

循环中

first   second         tmp

1           1

1            2              1

2            3              2

3           (5 )           3

时间: 2024-10-14 12:47:44

学习递归循环的相关文章

linux shell for循环解决递归循环目录结构

今天总结一下关于linux shell里的递归循环的问题起因是一个群友在群里的提问问的是怎么把有或多或少空目录的几个文件移动走的问题归根结底就是一个递归循环的问题 如果之前接触过c语言之类的编程语言.那么这个很好理解就是通过函数来不断的自己调用自己这种方法有一个很大的弊端就是需要很多资源比如有一种进程调用的 fork 炸弹 就是自调用搞的 接下来我就贴一下代码然后简单的讲解一下 #!/bin/sh . /etc/plus.lib a() {     for file  in `ls $1`   

递归 循环 比较

算法分析: 循环算法和递归算法 无论时间效率还是空间效率都是前者高.递归算法在运行时,函数调用保存现场.开辟运行资源.返回回收资源都需要耗时.递归算法的参数表面是一个变量,实际上市一个栈. 结论1: 递归确实是一些复杂的问题处理起来简单明了,但是,就效率而言,递归算法的实现往往比循环算法耗费更多的时间和存储空间,也限制了递归的深度.所以,在具体的实现中,应尽可能把递归算法转换为等价的循环算法,以提高算法的时空效率. 相应问题,如给一个整数,从低位到高位输出各位的数字. 结论2: 由于递归算法的实

学习递归时,影响到的一个算法问题

当年学习递归,有一个例子是 1,1,2,3,5,8,13......这样求第N个数的值. 当时还颇为认同其递归的巧妙. 后来去携程面试,还被问到,心里暗爽,这不是送分吗.俩分钟再小黑板上写出了递归的实现,被瑞亮总给分析了说是个O(n*n).还觉奇怪,为啥点了下这个 今天温习算法时,看到关于深度搜索和宽度搜索时,想到这个题目,重新思考了下.顿时觉得当时面试时,瑞亮总当时给留了面子. 下边是今天想到的O(N)的实现方法. int n =7; ArrayList<Integer> list = ne

第八章 shell学习之循环和结构化命令

for循环 1. 列表for循环 for variable in {list}  #有些像C++/CLR中的for each do ... done 如: 1. [[email protected] tmp]# cat b.sh #! /bin/bash for i in 1 2 3 4 5      #1 2 3 4 5等价于{1..5} do echo $i done [[email protected] tmp]# ./b.sh 1 2 3 4 5 2. [[email protected

【剑指offer】递归循环两种方式反转链表

转载请注明出处:http://blog.csdn.net/ns_code/article/details/25737023 本文分别用非递归和递归两种方式实现了链表的反转,在九度OJ上AC. 题目描述: 输入一个链表,反转链表后,输出链表的所有元素.(hint : 请务必使用链表) 输入: 输入可能包含多个测试样例,输入以EOF结束.对于每个测试案例,输入的第一行为一个整数n(0<=n<=1000):代表将要输入的链表的个数.输入的第二行包含n个整数t(0<=t<=1000000)

C# TreeView,递归循环数据加载到treeView1中

TblAreaBLL bll = new TblAreaBLL(); private void button1_Click(object sender, EventArgs e) { LoadDataToTree(this.treeView1.Nodes, bll.GetTblAreaListByID(0)); } private void LoadDataToTree(TreeNodeCollection treeNode, List<TblArea> list) { foreach (Tb

由易到难学习递归的精华

下面是收集的一些递归实现的小算法,勤加练习,相信每一个人都能对简单的递归驾驭自如! 从1加到n的一种递归的简洁写法 int AddFrom1ToN_Recursive(int n) { return n<=0 ? 0 : n+AddFrom1ToN_Recursive(n-1); } 求2进制,8进制,16进制的递归写法,原理相同! void go2(int nNum) { if (nNum == 0) return; else { go2(nNum / 2); printf("%d&qu

特殊的清明--------我学习了循环语句

1.在这个特殊的日子里(清明节),我坐在教室里学习java循环语句. package cn.class05; import java.util.Scanner; public class Class { public static void main(String[] args) { /* * 学习最基本的while循环语句 */ System.out.print("请输入今天是周几?"); Scanner input=new Scanner(System.in); String we

记一次nodejs 爬虫(利用递归循环nightmare)

记一次nodejs 爬虫(利用递归循环nightmare) 新手,欢迎交流 目标网站 这里的网址很有规律,方便我们获取图书列表的url nightmare几个主要的api 具体参考:http://www.manongjc.com/detail/8-roxmpabfhewimht.html .goto(url,options) url:目标网站 options:伪造头部信息 .wait(callback[selector]) 这个方法会重复调用,直到 return true, 可以传入选择器,如: