斐波那契数列算法分析--递归、非递归和公式法

本文探讨了计算机科学中常见的算法问题,包括排列组合、斐波那契数列、概率论应用、兔子繁殖问题等,并提供了多种解决方案。文章还涉及了计算机科学领域的基础知识,如前端开发、后端开发、移动开发等细分技术领域。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

类似问题有:

1、排列组合

有一段楼梯有10级台阶,规定每一步只能跨一级或两级,要登上第10级台阶有几种不同的走法?
这就是一个斐波那契数列:登上第一级台阶有一种登法;登上两级台阶,有两种登法;登上三级台阶,有三种登法;登上四级台阶,有五种登法……
1,2,3,5,8,13……所以,登上十级,有89种走法。
2、一枚均匀的硬币掷10次,问不连续出现正面的可能情形有多少种?
答案是(1/√5)*{[(1+√5)/2]^(10+2) - [(1-√5)/2]^(10+2)}=144种。
3、兔子繁殖问题
一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来。如果所有兔子都不死,那么一年以后可以繁殖多少对兔子?
//递归
long fib1(int n){
	if (n <= 2){
        	return 1;
        }else{
                return fib1(n-1) + fib1(n-2);
       }
}


//非递归方法O(n)
long fib3 (int n){
       long x = 0, y = 1;
       for (int j = 1; j < n; j++){
              y = x + y;
              x = y - x;
       }
       return y;
}
//公式法O(1)
long fib5(int n){
       double z = sqrt(5.0);
       double x = (1 + z)/2;
       double y = (1 - z)/2;
       return (pow(x, n) - pow(y, n))/z + 0.5;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值