• 1500【自定义函数】走楼梯


    描述

    已知一个楼梯有n级,小谢同学从下往上走,一步可以走一级,也可以走两级。问:他走到第n级楼梯有多少种走法?

    输入

    一行一个正整数n,1≤n≤40。

    输出

    一行一个整数,表示走到第n级有多少种走法。

    输入样例 1 

    9

    输出样例 1

    55

    这道题一上手时,我相信大多数人都会第一时间想到用递推来解。
    但是那样做题的效率较低,方法也相对复杂,不太适合刚入门C++的新手。
    我使用的这个方法是源自曾经刷过的一个小升初的原题。
    我们从1开始。
    楼梯级数 可采用方法数
    1 1
    2 2
    3 3
    4 5
    5 8












    从表格可以看得出来,随着楼梯级数的增加,可采用方法数也随之增加。
    增加的规律就十分眼熟了,可以看得出来增加的规律遵循着斐波那契数列的规则。
    得出这个结论后,这一题就非常简单了。我们可以写一个非常简单的求斐波那契第n项的程序,就可以做出这道题了。
    代码:
     1 #include<iostream>
     2 using namespace std;
     3 int main()
     4 {
     5     int a,b,c,k;
     6     cin>>k;
     7     a=1;
     8     b=1;
     9     for(int i=3;i<=k+1;i++)
    10     {
    11         c=a+b;
    12         a=b;
    13         b=c;
    14     }
    15     cout<<b;
    16     return 0;
    17 }

    由于题目要求用自定义函数来解答,所以我们还要把它改成自定义函数的形式。

     1 #include<iostream>
     2 using namespace std;
     3 void louti(int k)
     4 {
     5     int a=1,b=1,c;
     6     for(int i=3;i<=k+1;i++)
     7     {
     8         c=a+b;
     9         a=b;
    10         b=c;
    11     }
    12     cout<<b;
    13 }
    14 int main()
    15 {
    16     int a,b,c,k;
    17     cin>>k;
    18     louti(k);
    19     return 0;
    20 }
  • 相关阅读:
    .Proto 文件转换成.cs文件
    C# 委托和事件
    C# 对word (03、07)的相关操作
    程序中记录日志的封装类
    压缩文件程.ZIP
    xml和对象直接的序列化和反序列化
    C#判断两个日期是否在同一周,某日期是本月的第几周
    vs2008 C# 单元测试
    解压缩.zip文件
    记录一次曲折的维护-重构过程
  • 原文地址:https://www.cnblogs.com/cyk20081108/p/14351557.html
Copyright © 2020-2023  润新知