You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言计算指定数学序列的迭代版函数实现及优化咨询

迭代版本实现思路

你提供的递归版本对应的递推规则非常明确:

  • 初始条件:x₀ = 1.0(对应n=0的返回值)
  • 递推关系:对所有n≥1,xₙ = xₙ₋₁ + 1/xₙ₋₁
    迭代版本直接从初始值x₀正向计算n次即可,不需要回溯,也不需要额外栈空间。
符合要求的迭代代码
float sequence(int n)
{
    float x = 1.0f; // 对应sequence(0)的结果
    // 边界校验,若题目保证输入n为非负整数可删除该行
    if (n < 0) return 0.0f;
    for (int i = 0; i < n; i++) {
        x += 1.0f / x;
    }
    return x;
}
代码说明
  • 时间复杂度为O(n),仅需要执行n次加法和除法运算,无冗余计算
  • 空间复杂度为O(1),全程只使用2个局部变量,比递归版本的O(n)递归栈空间开销小很多,也避免了n值过大时递归栈溢出的问题
  • 计算结果和你提供的递归版本完全匹配:sequence(0)=1,sequence(1)=2,sequence(2)=2.5,sequence(3)=2.9,sequence(100)≈14.284066,你问题描述里的sequence(3)=2.5、sequence(4)=2.9属于序号标注错误,实际是n=2对应2.5,n=3对应2.9

内容的提问来源于stack exchange,提问作者mxbr236

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 15:06:06