C语言项目爬楼梯的两种实现方法参考

 更新时间:2019年02月19日 09:56:13   作者:迂者-贺利坚  
今天小编就为大家分享一篇关于C语言项目爬楼梯的两种实现方法参考,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

【项目-爬楼梯】

楼梯有n阶台阶,上楼可以一步上1阶,也可以一步上2阶,编一程序计算共有多少种不同的走法?

【参考解答(递归法)】

基础:楼梯有一个台阶,只有一种走法(一步登上去);两个台阶,有2种走法(一步上去,或分两次上去);

递推:有n个台阶时,设有count(n)种走法,最后一步走1个台阶,有count(n-1)种走法;最后一步走2个台阶,有count(n-2)种走法。于是count(n)=count(n-1)+count(n-2)。

可见,此问题的数学模型竟然是斐波那契数。

#include<stdio.h>
int main()
{
 unsigned long count(int n);
 int n;
 unsigned long m;
 printf("请输入楼梯的阶数:");
 scanf("%d",&n);
 m=count(n);
 printf("有%lu种爬楼梯的方法\n",m);
 return 0;
}
unsigned long count (int n)
{
 unsigned long f;
 if(n==1)
  f=1;
 else if(n==2)
  f=2;
 else
  f=count(n-1)+count(n-2);
 return(f);
}

递归思路清晰,但却“成本”高。另一个方法,在完成问题建模之后,采用了一种很巧妙的“非常规”的做法,将运算量减少了一半。

//计163-1姜淇瀚
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
int main()
{
 int fib(int a,int b,int n);
 int n;
 scanf(&quot;%d&quot;,&amp;n);
 printf(&quot;%d&quot;,fib(0,1,n));
 return 0;
}
int fib(int a,int b,int n)
{
 if(n==3)
 {
  return a+b;
 }
  return fib(b,a+b,n-1);
}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

相关文章

  • C++中int、DWORD和QWORD示例详解

    C++中int、DWORD和QWORD示例详解

    当谈论C++编程语言时,以下术语经常被提及:int、DWORD和QWORD,它们是用于表示不同数据类型和长度的关键字,本文通过举例给大家详细介绍,感兴趣的朋友一起看看吧
    2024-06-06
  • C语言输入一个字符串的方法有哪些

    C语言输入一个字符串的方法有哪些

    字符串输入是C语言编程中非常重要的部分,其中scanf函数是一种广泛使用的输入字符串的方法,下面这篇文章主要给大家介绍了关于C语言输入一个字符串的方法有哪些的相关资料,需要的朋友可以参考下
    2023-06-06
  • C++中4种类型转换方式 cast操作详解

    C++中4种类型转换方式 cast操作详解

    static_cast,支持子类指针到父类指针的转换,并根据实际情况调整指针的值,反过来也支持,但会给出编译警告,它作用最类似C风格的“强制转换”,一般来说可认为它是安全的
    2013-10-10
  • C语言多种获取字符串长度的方法

    C语言多种获取字符串长度的方法

    这篇文章主要介绍了C语言多种获取字符串长度的方法,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • C语言图文并茂讲解分支语句用法

    C语言图文并茂讲解分支语句用法

    分支结构的执行是依据一定的条件选择执行路径,而不是严格按照语句出现的物理顺序。分支结构的程序设计方法的关键在于构造合适的分支条件和分析程序流程,根据不同的程序流程选择适当的分支语句
    2022-04-04
  • Qt实现网络聊天室的示例代码

    Qt实现网络聊天室的示例代码

    本文主要介绍了Qt实现网络聊天室,实现一个在线聊天室, 使用tcp对客户端和服务器端进行通讯。具有一定的参考价值,具有一定的参考价值,
    2021-06-06
  • C/C++使用API实现数据的压缩与解压缩

    C/C++使用API实现数据的压缩与解压缩

    在Windows编程中,经常会遇到需要对数据进行压缩和解压缩的情况,本文将深入探讨使用Windows API进行数据压缩与解压缩的过程,感兴趣的小伙伴可以了解下
    2023-11-11
  • C++数据结构关于栈迷宫求解示例

    C++数据结构关于栈迷宫求解示例

    这篇文章主要为大家介绍了C++数据结构关于栈的迷宫求解示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2021-11-11
  • vector, list, map在遍历时删除符合条件的元素实现方法

    vector, list, map在遍历时删除符合条件的元素实现方法

    下面小编就为大家带来一篇vector, list, map在遍历时删除符合条件的元素实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • C++ 大根堆排序学习笔记

    C++ 大根堆排序学习笔记

    这篇文章主要为大家介绍了C++ 大根堆排序的学习教程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10

最新评论