首页 > 其他分享 >递归之上楼梯

递归之上楼梯

时间:2023-10-26 11:13:09浏览次数:32  
标签:递归 int 之上 第一层 climbStairs 第二层 楼梯

my code:

int f[46];
int climbStairs(int n){     f[0] = 1;     f[1] = 1;     int i;     for(i = 2 ; i <= n ; ++i){         f[i] = f[i - 1] + f[i - 2];     }return f[n];                    //原来写的是f [ i ] ,但是这是错的,因为 f [ i ]里面存储的是从第 i - 2 层上到 i 层的方法,缺少了前面累积的,而我理解的是此时f [ i ] 就是 f [ n ] ,因为 i++,此时跳出for循环,但是这是错的,原因放到领悟中。 }   优解: int f[46];
int climbStairs(int n){     f[0] = 1;     f[1] = 1;     int i;     for(i = 2 ; i <= n ; ++i){         f[i] = f[i - 1] + f[i - 2];     }return f[n]; }       //暂时还没有学会方便的解法,就照上面了     领悟:对自建函数可以理解为一个内部有递归的函数,想计算 f [ i ] 就必须知道 f [ i - 1 ] 和 f [ i - 2 ] 的值,而同理,求  f [ i - 1 ] 和 f [ i - 2 ],又需要知道前面对应的值,直到最初的状态,此处默认为第0层,所以f  [ 0 ] 为最终的终止处,其实理解起来像是累和,在第二层时,上到第二层只有两种情况,从第一层上一步和从第二层上两步,第n层就分析n - 1层和 n - 2 层,为什么感觉总值少了2呢?其实没有,因为从第0层开时,已经加过了,我们认为上到第0层用了一种方法,上到第一层也只有一种方法,从第0 层上一步,这样,f [ 0 ] == 1, f [ 1 ] == 1 就为初始值,通过不断加上每一层的情况,得到目的层的情况。回到上面的错误,为什么不是 f [ i ] ?这涉及到局部变量的知识,for循环中的i 在循环结束后就被销毁了,那么 i 就只是定义的整型数据,没有初值,所以会报错。              

标签:递归,int,之上,第一层,climbStairs,第二层,楼梯
From: https://www.cnblogs.com/2874147746lijiacheng/p/17788948.html

相关文章

  • MySQL CTE递归查询 Data too long for colum‘xxx‘ at row 1
    在mysql8使用 CTE递归查询时,出现了这个报错WITHrecursiveareaAS(SELECTarea_name,area_codeFROMsys_area_treeWHEREarea_category='1'ANDparent_codeISNULLUNIONALLSELECTconcat(t1.area_name,'/',t.area_name),t.area_code......
  • 递归求解N皇后问题
      ......
  • 非递归求解N皇后问题
      ......
  • Python 函数:定义、调用、参数、递归和 Lambda 函数详解
    函数是一段代码块,只有在调用时才会运行。您可以将数据(称为参数)传递给函数。函数可以返回数据作为结果。创建函数在Python中,使用def关键字定义函数:示例defmy_function():print("Hellofromafunction")调用函数要调用函数,请使用函数名称后跟括号:示例defmy_function......
  • Python 函数:定义、调用、参数、递归和 Lambda 函数详解
    函数是一段代码块,只有在调用时才会运行。您可以将数据(称为参数)传递给函数。函数可以返回数据作为结果。创建函数在Python中,使用def关键字定义函数:示例defmy_function():print("Hellofromafunction")调用函数要调用函数,请使用函数名称后跟括号:示例defmy_function(......
  • Java Stream流实现递归查询
    MySql数据库表结构模拟数据查询出所有数据,用父节点递归查询出所有子节点数据/***封装备注分类集合**@paramremarkTypeList备注分类集合*@return递归好的集合*/@OverridepublicList<RemarkType>queryRemarkTypeList(......
  • [Leetcode] 0070. 爬楼梯
    70.爬楼梯题目描述假设你正在爬楼梯。需要n 阶你才能到达楼顶。每次你可以爬1或2个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例1:输入:n=2输出:2解释:有两种方法可以爬到楼顶。1.1阶+1阶2.2阶示例2:输入:n=3输出:3解释:有三种方法可以爬到楼顶。1......
  • 习题专题- 运用递归 输出第n个 斐波那契数
    斐波那契数 1123581321...............#include<stdio.h>intxy(intn){ if(n<=2) { return1; } else { returnxy(n-1)+xy(n-2); }}intmain(){ intn=0; intret=0;printf("请输入要查找第几个:") scanf("%d",&......
  • PTA 函数与递归部分题目讲解及思路
    7-1判断素数题目分析题目输入n个数,判断其是否为质数对于判断质数,只需要满足从2开始遍历的每一个数一直到√n均无法被n整除即可关于为什么只要到√n呢?因为n=√n*√n,因此其最大的因数不会超过√n,因此可以优化减少不必要的循环ACCode#include<iostream>#include<c......
  • 动态规划-爬楼梯问题
    假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 我们用f(x)表示爬到第x级台阶的方案数,考虑最后一步可能跨了一级台阶,也可能跨了两级台阶,所以我们可以列出如下式子:f(x)=f(x−1)+f(x−2)它意味着爬到......