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

累和,累积,斐波拉契

累和、累积、斐波拉契

一、累和(Sum)

1. 定义

累和指将一系列数值依次相加的结果。例如,数列 1,2,3,4 的累和为 1+2+3+4=10

2. C 语言实现

#include <stdio.h>// 计算前n个自然数的累和(迭代法)
int sum_iterative(int n) {int sum = 0;for (int i = 1; i <= n; i++) {sum += i;}return sum;
}// 计算前n个自然数的累和(数学公式)
int sum_formula(int n) {return n * (n + 1) / 2;
}int main() {int n = 10;printf("迭代法累和: %d\n", sum_iterative(n));printf("公式法累和: %d\n", sum_formula(n));return 0;
}

3. 性能分析

  • 迭代法:时间复杂度 (O(n)),需遍历 n 次。
  • 公式法:时间复杂度 (O(1)),直接计算。

二、累积(Product)

1. 定义

累积指将一系列数值依次相乘的结果。例如,数列 1,2,3,4 的累积为 1×2×3×4=24(即 4 的阶乘)。

2. C 语言实现

#include <stdio.h>// 计算前n个自然数的累积(迭代法)
int product_iterative(int n) {int product = 1;for (int i = 1; i <= n; i++) {product *= i;}return product;
}// 计算前n个自然数的累积(递归法)
int product_recursive(int n) {if (n == 0) return 1;return n * product_recursive(n - 1);
}int main() {int n = 5;printf("迭代法累积: %d\n", product_iterative(n));printf("递归法累积: %d\n", product_recursive(n));return 0;
}

3. 性能分析

  • 迭代法:时间复杂度 (O(n)),需遍历 n 次。
  • 递归法:时间复杂度 (O(n)),但递归深度为 n,可能导致栈溢出(如 n>10000)。

三、斐波那契数列(Fibonacci)

1. 定义

斐波那契数列满足:(F(0)=0, F(1)=1, F(n)=F(n-1)+F(n-2))(n≥2)。 例如:0, 1, 1, 2, 3, 5, 8, 13, ...

2. C 语言实现

#include <stdio.h>// 方法1:递归法
int fib_recursive(int n) {if (n <= 1) return n;return fib_recursive(n - 1) + fib_recursive(n - 2);
}// 方法2:迭代法(循环)
int fib_iterative(int n) {if (n <= 1) return n;int a = 0, b = 1, c;for (int i = 2; i <= n; i++) {c = a + b;a = b;b = c;}return b;
}// 方法3:矩阵快速幂(高效算法)
void multiply(int F[2][2], int M[2][2]) {int x = F[0][0] * M[0][0] + F[0][1] * M[1][0];int y = F[0][0] * M[0][1] + F[0][1] * M[1][1];int z = F[1][0] * M[0][0] + F[1][1] * M[1][0];int w = F[1][0] * M[0][1] + F[1][1] * M[1][1];F[0][0] = x;F[0][1] = y;F[1][0] = z;F[1][1] = w;
}void power(int F[2][2], int n) {if (n == 0 || n == 1) return;int M[2][2] = {{1, 1}, {1, 0}};power(F, n / 2);multiply(F, F);if (n % 2 != 0) multiply(F, M);
}int fib_matrix(int n) {if (n == 0) return 0;int F[2][2] = {{1, 1}, {1, 0}};power(F, n - 1);return F[0][0];
}int main() {int n = 10;printf("递归法斐波那契: %d\n", fib_recursive(n));printf("迭代法斐波那契: %d\n", fib_iterative(n));printf("矩阵法斐波那契: %d\n", fib_matrix(n));return 0;
}

3. 性能对比

方法时间复杂度空间复杂度适用场景
递归法(O(2^n))(O(n))n 较小(n<30)
迭代法(O(n))(O(1))n 中等(n<10^6)
矩阵快速幂(O(\log n))(O(1))n 极大(n>10^9)

四、常见问题与优化

  1. 整数溢出:累积和斐波那契数列增长极快,需使用 long long__int128 类型。
  2. 递归深度:递归法可能导致栈溢出,建议使用迭代法。
  3. 大数计算:若需处理极大数值(如 n=1000),需使用高精度库(如 GMP)。

五、应用场景

  • 累和:计算平均数、等差数列求和。
  • 累积:计算排列组合数、概率问题。
  • 斐波那契数列:生物生长模型、黄金分割、动态规划。
http://www.lryc.cn/news/591754.html

相关文章:

  • X00218-基于机器学习的磁流变液迟滞性能分析python实现
  • SpringBoot01-springBoot的特点
  • 如何用 Python + LLM 构建一个智能栗子表格提取工具?
  • VSCode 配置 C# 开发环境完整教程(附效果截图)
  • 深入解析Hadoop:机架感知算法与数据放置策略
  • 在 Windows Server RDS 上配置用户配置文件磁盘查找对应的用户名
  • LeetCode|Day17|242. 有效的字母异位词|Python刷题笔记
  • 每日钉钉API探索:createDing一键发起DING消息
  • 嵌入式基础 -- ADC(模数转换器,Analog to Digital Converter)
  • Spring Boot 中 META-INF 的作用与功能详解
  • AI编程实战:如何让AI生成带参数和返回值的Python函数——以PDF文本提取为例
  • 锂电池制造行业MES特色解决方案:差异化生产管控与智能工厂实践
  • c++ 模板元编程
  • CAD model dataset 下载
  • centos7开启ntp并同步时间到指定时区
  • 航班管家sid参数加密纯算分析
  • 使用 Nacos + Higress 连接 Agent 和 MCP 服务进行使用
  • 相位中心偏置天线的SAR动目标检测
  • C++进阶-AVL树(平衡二叉查找树)(难度较高)
  • 由几道数量关系考题引起的思考
  • 【CodeTop】每日练习 2025.7.17
  • Python类型转换,深浅拷贝
  • 【深度学习】神经网络过拟合与欠拟合-part5
  • DiffPy-CMI详细安装教程
  • ubuntu 22.04 pam 模块设置用户登录失败锁定
  • 网络基础11 上公网--Internet接入技术
  • python的旧时光咖啡厅数据分析管理系统
  • 深入理解CSS定位:绝对定位的包含块机制
  • JUnit5 实操
  • 征程 6 UCP 任务优先级 抢占简介与实操