雷火电竞-中国电竞赛事及体育赛事平台

歡迎來到入門教程網(wǎng)!

C語言

當(dāng)前位置:主頁 > 軟件編程 > C語言 >

C語言項目爬樓梯的兩種實現(xiàn)方法參考

來源:本站原創(chuàng)|時間:2020-01-10|欄目:C語言|點擊:

【項目-爬樓梯】

樓梯有n階臺階,上樓可以一步上1階,也可以一步上2階,編一程序計算共有多少種不同的走法?

【參考解答(遞歸法)】

基礎(chǔ):樓梯有一個臺階,只有一種走法(一步登上去);兩個臺階,有2種走法(一步上去,或分兩次上去);

遞推:有n個臺階時,設(shè)有count(n)種走法,最后一步走1個臺階,有count(n-1)種走法;最后一步走2個臺階,有count(n-2)種走法。于是count(n)=count(n-1)+count(n-2)。

可見,此問題的數(shù)學(xué)模型竟然是斐波那契數(shù)。

#include<stdio.h>
int main()
{
 unsigned long count(int n);
 int n;
 unsigned long m;
 printf("請輸入樓梯的階數(shù):");
 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);
}

遞歸思路清晰,但卻“成本”高。另一個方法,在完成問題建模之后,采用了一種很巧妙的“非常規(guī)”的做法,將運算量減少了一半。

//計163-1姜淇瀚
#include <stdio.h>
#include <stdlib.h>
int main()
{
 int fib(int a,int b,int n);
 int n;
 scanf("%d",&n);
 printf("%d",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);
}

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對我們的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接

上一篇:劍指offer之C語言不修改數(shù)組找出重復(fù)的數(shù)字

欄    目:C語言

下一篇:C語言如何正確的終止正在運行的子線程

本文標(biāo)題:C語言項目爬樓梯的兩種實現(xiàn)方法參考

本文地址:http://www.jygsgssxh.com/a1/Cyuyan/454.html

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請與我們聯(lián)系,我們將在24小時內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有