当前位置: 代码迷 >> 综合 >> 递归练习(斐波那契数列)
  详细解决方案

递归练习(斐波那契数列)

热度:97   发布时间:2024-01-27 02:28:14.0

题目描述:一个楼梯共有n个台阶,一次只能走1个,或2个台阶,走到完n个台阶有多少种走法?

先从简单入手:

1个台阶  有一种走法; (1)

2个台阶  有两种走法: (1, 1)    (2)

3个台阶  有三种走法: (1,1,1)   (1,2)  (2,1)

4个台阶  有五种走法: (1,1,1,1)  (1,2,1) (2,1,1)(1,1,2)(2,2)

…………

n个台阶:   f(n)=f(n-1)+f(n-2)

递归解决:

#include <stdio.h>int step(int n)
{if(n==1)return 1;else if(n==2)return 2;elsereturn step(n-1)+step(n-2);
}int main()
{int n;scanf("%d", &n);printf("共有%d种方法\n", step(n));}

 

非递归解法:

#include <stdio.h>int main()
{int n, i, sum=0, step1=1, step2=2;scanf("%d", &n);for(i=1; i<=n; i++){if(i==1)sum=step1;else if(i==2)sum=step2;else{sum=step1+step2;step1=step2;step2=sum;}}printf("共有%d种方法\n", sum);}

(完)

  相关解决方案