小米oj记录——(十)爬楼梯

描述

在你面前有一个n阶的楼梯,你一步只能上1阶或2阶。 请问计算出你可以采用多少种不同的方式爬完这个楼梯。

输入
一个正整数,表示这个楼梯一共有多少阶
输出
一个正整数,表示有多少种不同的方式爬完这个楼梯
输入样例

  5
  10

输出样例

8
89

代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stddef.h>
#include <ctype.h>
int f(int a)
{
	if(a==1||a==2)
		return a;
	else
		return f(a-1)+f(a-2);
}
int main()
{
	int n;
	scanf("%d",&n);
	printf("%d",f(n));
}

心得:

  1. 台阶数为n=1或n=2时,种类分别就是1和2
    当台阶数n>=3时:
    当上到第n阶可以看做第n-1阶上一阶到达或者第n-2阶上两阶到达,假设上n阶的方法有f(n)种,则f(n)=f(n-1)+f(n-2),此时成为了一个递归问题。
  2. 改进:可以增加对输入n的判断,若为小数或负数,则提示出错。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值