当前位置: 首页 > news >正文

计算斐波那契数列

1.对于斐波那契数列的理解:
(1)常规

该数列由兔子繁衍的想法产生,故又“兔子数列”

其数值为:1、1、2、3、5、8、13、21、34

从数学定义上走:F(0)=1,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)。

(2)非常规

同斐波那契的定义一样,只是初始值发生变化,也被称为“奇怪的斐波那契数列”

2.对于求第N个斐波那契数列的元素的个人想法:
一:通过数学推导斐波那契的通项公式,从而由通项公式直接求值:
下列给出求解常规斐波那契数列的方法一

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<math.h>
int main()
{
    int n, sum, i;
    int c = 0;
    double num,num_1,num_2,num_3,n_2,n_3;
    num = sqrt(5.0);
    num_1 = 1.0 / sqrt(5.0);
    num_2 = (1.0 + sqrt(5.0)) / 2.0;
    num_3 = (1.0 - sqrt(5.0)) / 2.0;
    scanf("%d", &n);
    if (0 < n && n<= 1)
    {
        printf("1");
    }
    else if (n > 1)
    {
        for (i = 3;i>0;i++)
        {
            n_2 = pow(num_2, i);
            n_3 = pow(num_3, i);
            sum = num_1 * (n_2 - n_3);
            if (sum >= n)
            {
                c = i;
                break;
            }
        }
        printf("%d",i);
    }
    return 0;
}

二:通过迭代法,求解第N个斐波那契数列的数字的值
下列给出求解奇怪的斐波那契数列的特定项值的方法二:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main() {
    int a = 7;
    int b = 11;
    int n;
    int c;
    c = a + b;
    scanf("%d", &n);
    for (n; n >1; n--)
    {
        a = b;
        b = c;
        c = a + b;
 
    }
    printf("%d", a);
    printf(" %s", (a % 3 == 0)? "yes": "no");
    return 0;
}

此程序用来判断奇怪的斐波那契数列的第N个值是否为3的倍数,而其底层思想就是通过程序的循环迭代实现一轮一轮下来的求值。

3.思想总结
(1)斐波那契数列的特定数学规律,决定了它可以通过迭代法求值的底层逻辑,但同时也要关注到在这种迭代法的运行下,当n值达到30至40以上的时候容易出现爆值,导致程序运行错误。而同时使用循环进行迭代的运行时长较长,运行效率不高

(2)而由数学原理推导出斐波那契数列的通项公式,转化成程序,则是实现了定点求值,直接由表达式进行求值并对变量进行赋值处理,但同时也要关注到根号下数值对应的变量类型,防止隐式转换下造成的精度下降,数据溢出的情况,所以最好将通项公式中的常量分开求值,在通过变量赋值代入到总表达式中,实现斐波那契数列的通项公式,从而保证了求值的精确度。

相关文章:

  • 天梯赛L1-22-25
  • SpringBoot 与 Vue3 实现前后端互联全解析
  • 日常记录-CentOS 9安装java17
  • GitLab-获取token(访问令牌)
  • 用css给div列表加个序号
  • uniapp的h5,打开的时候,标题会一闪而过应用名称,再显示当前页面的标题
  • uniapp 自定义tabbar
  • D1084低功耗LDO稳压器:技术解析与应用设计
  • 各证券公司QMT的本地VSCode开发环境配置指南
  • CRUD3
  • Bad Request 400
  • 什么是 矩阵号 ?为什么要做海外矩阵?
  • Axure高保真AI算法训练平台
  • SQL2API 核心理念:如何重构数据服务交付范式
  • github配置ssh,全程CV
  • chain_type=“stuff 是什么 ? 其他方式有什么?
  • 用户管理和权限管理
  • FnOS安装
  • Vue接口平台学习七——接口调试页面请求体
  • PyTorch实现权重衰退:从零实现与简洁实现
  • 中央结算公司:减免境外央行类机构账户开户费用
  • 俄乌拟在土耳其举行会谈,特朗普:我可能飞过去
  • 香港暂停进口美国北达科他州一地区禽肉及禽类产品
  • 农行深圳市分行原副行长王国彪涉嫌严重违纪违法被查
  • 言短意长|西湖大学首次“走出西湖”
  • 人民日报整版聚焦:专家学者看2025中国经济增长点