首页 > 其他分享 >函数--递归调用

函数--递归调用

时间:2024-01-25 12:13:38浏览次数:21  
标签:调用 台阶 递归 走法 -- 公式 int step return

1.怎么写出一个递归函数

step1,写好公式

公式是怎么得出的?一般来说通过数学上的归纳演绎、总结得出,具体看下面的例子。

step2,一定要写结束条件

这一步比较简单,还是得到公式比较关键。

2.走楼梯

Description

假如有n个台阶,一次只能上1个台阶或2个台阶,请问走到第n个台阶有几种走法?为便于读者理解题意,这里举例说明如下:假如有3个台阶,那么总计就有3种走法:第一种为每次上1个台阶,上3次;第二种为先上2个台阶,再上1个台阶;第三种为先上1个台阶,再上2个台阶。输入为n,输出为走到第n个台阶有几种走法
Input
比如输入是3

Output
如果输入是3,走到第3个台阶的走法总计有3种,1,1,1 和 1,2 和2,1,输出为3

2.1 找公式

  • 归纳,设台阶共n级,
  • 若n=1,则共1种;
  • 若n=2,则有2种;
  • 若n=3,则有3种;
  • 若n=4,则有?
n = 4
1 1 1 1
1 1 2
1 2 1
2 1 1
2 2

n=5
1 1 1 1 1
1 1 1 2
1 1 2 1
1 2 1 1
2 1 1 1
1 2 2
2 2 1
2 1 2
  • 若n=4,共有5种;
  • 若n=5,共有8种。
    故由归纳演绎可知,step(n)= step(n-1)+step(n-2),公式找到。

2.2 确定结束条件

首先,我们要知道调用函数f(n),这个f(n)实际上代表了函数的返回值。在走楼梯问题中,当n=3时,return step(1)+step(2) 而再往下台阶不可能等于0或小于0,所以找到了结束条件。

2.3 函数实现

#include <stdio.h>

//递归调用
int step(int n)
{
    if(1 == n || 2 == n) //第二步,确定结束条件
    {
        return n;
    }
    return step(n-1) + step(n-2); //第一步,写好公式
}

int main()
{
    int n; //几级台阶
    int num = 0; //共几种走法
    scanf("%d", &n);
    num = step(n);
    printf("%d\n", num);
    return 0 ;
}

标签:调用,台阶,递归,走法,--,公式,int,step,return
From: https://www.cnblogs.com/paopaotangzu/p/17986883

相关文章

  • Uni-app页面路由的五种写法
    uni.navigateTo(OBJECT)uni.redirectTo(OBJECT)uni.reLaunch(OBJECT)uni.switchTab(OBJECT)uni.navigateBack(OBJECT) 概要代码展示在最后,可以在应用中感受这几种不同方法的不同页面路由的方式有很多,在项目中遇到不同的跳转需求,就需要使用不同的跳转方法,下面介绍一下不......
  • c++ openssl加密 解密
    #include<iostream>#include<boost/asio.hpp>#include<boost/beast.hpp>#include<boost/beast/websocket.hpp>#include<boost/asio/spawn.hpp>#include<json.hpp>#include<boost/filesystem.hpp>#include<fstrea......
  • 计网笔记:python实现简单的UDP/TCP代码
    初学计网,同时也是第一次写blog,若有不妥之处请多多包涵......
  • SUBMIT指定用户名错误
    1、SUBMIT说明 在ABAP中,SUBMIT关键字用于运行另一个ABAP程序。通过SUBMIT关键字,可以在当前程序内部调用其他程序,而无需关闭当前程序。SUBMIT语句的一般语法如下:"--------------------@斌将军--------------------SUBMIT<program>[VIASELECTION-SCREEN|USINGSELECTION-SE......
  • 如何手工制作绿色免安装单文件同花顺免费版Windows客户端 2024-01-25
    如何手工制作绿色免安装单文件同花顺免费版Windows客户端  2024-01-25第1步、下载同花顺免费版http://download.10jqka.com.cn/第2步、安装同花顺免费版第3步、移动同花顺免费版软件到文件夹 D:\Prog\同花顺第4步、新建批处理脚本文件 D:\Prog\同花顺\一键打包\一键打......
  • Error: unable to perform an operation on node 'rabbit@pro'. Please see diagnosti
    简短的和全限定RabbitMQ节点名称rabbitmq支持简短的和全限定域名作为节点名称,但是默认的是简短的,我这里使用了全限定的域名,所以在集群操作stop_app的时候报错了  在rabbitmq安装目录下的/etc/rabbitmq加上配置文件rabbitmq-env.conf(环境变量)就可以了#开启使用全限定节点名......
  • 1、读取hudi表问题 readDirect unsupported in RemoteBlockReader
    Causedby:java.lang.UnsupportedOperationException:readDirectunsupportedinRemoteBlockReaderatorg.apache.hadoop.hdfs.RemoteBlockReader.read(RemoteBlockReader.java:492)atorg.apache.hadoop.hdfs.DFSInputStream$ByteBufferStr......
  • Unity3D 游戏中的自动寻路有怎样的算法详解
    前言Unity3D是一款非常流行的游戏引擎,它的自动寻路功能可以使游戏角色在场景中自动找到最短路径并前往目标位置。本文将详细介绍Unity3D中自动寻路的算法原理以及代码实现。对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交流一下开发经验呀在游戏开发中,自动寻路是......
  • 欧几里得算法
    欧几里得算法用于求解两个数\(a,b\)的最大公约数,\(\gcd(a,b)=\gcd(b,a\bmodb)\),为了方便证明,我们约定\(a>b\),证明:设\(r=a\bmodb=a-k\cdotb\),\(d\mida\)且\(d\midb\),显然\(a=k\cdotb+r\),那么\(\frac{r}{d}=\frac{a}{d}-\frac{k\cdot......
  • cnf结构探索与应用的文献-归入cmt标签
      @inproceedings{DBLP:conf/gcai/JamaliM17,author={SimaJamaliandDavidMitchell},editor={ChristophBenzm{\"{u}}llerandChristineL.LisettiandMartinTheobald},t......