C语言3种斐波那契数列 您所在的位置:网站首页 斐波那契额数列c语言 C语言3种斐波那契数列

C语言3种斐波那契数列

2024-03-28 04:14| 来源: 网络整理| 查看: 265

        斐波那契数列(Fibonacci sequence),又称黄金分割数列、兔子数列。指的是这样一个数列:1、1、2、3、5、8、13、21、34、……;简单说就是前两项之和等于后一项,F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)。

应用场景:

排列组合:

        有一段楼梯有10级台阶,规定每一步只能跨一级或两级,要登上第 10 级台阶有几种不同的走法?

        这就是一个斐波那契数列:登上第一级台阶有一种登法;登上两级台阶,有两种登法;登上三级台阶,有三种登法;登上四级台阶,有五种登法……

        1,2,3,5,8,13…… 所以,登上十级,有 89 种走法。

兔子繁殖问题:

        有一只兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子,假如兔子都不死,问第n个月的兔子总数为多少?

        这也是一个斐波那契数列:第一个月有1只兔子,第二个月有一只兔子,第三个月有2只兔子,第四个月有3只兔子,第五个月有5只兔子……从第三个月开始,前一个月的兔子数量就是这个月新出生的兔子数量。

...

1·暴力递归

思路:

        数学公式 f(n) = f(n-1) + f(n-2)

int fib(int n) { if (n > 2) { return fib(n - 1) + fib(n - 2); } else { return 1; } }

问题:暴力递归时间复杂度过高,其中进行了极其大量、重复的运算。递归n次,时间复杂度O(2^n)。

2·非递归_顺序循环实现

思路:

        前两项之和等于后一项,所以从前往后求。相比于暴力递归,顺序循环的方法避免了重复的运算。

int fib(int n)//此处我们默认n > 0 { int first_idx = 1; int sec_idx = 1; int tmp = 0; if (n


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有