我靠哦

博客提到资源上传后既不能修改也不能删除,博主对此表示鄙视。

鸟资源上传上去了改也不能改,删也不能删...

 

鄙视之

非常抱歉如果刚才的回答让你感到不舒服,我完全没有要让你觉得“凶”的意思。我会放慢节奏,用更温柔、更简单的方式来帮你理解这个问题。 我们一起来看第9.3题: --- ### 🌟题目内容(重新表达得更清楚): 我们要用 **递归** 的方法来计算下面这个数学式子的值: $$ f(x) = x - \frac{x^3}{3!} + \frac{x^5}{5!} - \frac{x^7}{7!} + \frac{x^9}{9!} - \cdots $$ 👉 这其实是数学中 **sin(x)**(正弦函数)的一个“无限加法公式”,叫泰勒展开。 我们的目标是:写一个 C 语言程序,用“自己调用自己”的方式(也就是递归),一步一步地把前面几项加起来,得到一个接近真实 sin(x) 的结果。 --- ### ✅举个例子更容易懂: 比如我们算 $ x = 1 $ 弧度时,取前3项: $$ f(1) = 1 - \frac{1^3}{3!} + \frac{1^5}{5!} = 1 - \frac{1}{6} + \frac{1}{120} = 1 - 0.1667 + 0.0083 ≈ 0.8416 $$ 而真正的 $ \sin(1) ≈ 0.8415 $,已经很接近啦! --- ### 💡我们要做的就是:让计算机自动一项一项加起来,用“递归”来做这件事。 下面是 **简单易懂的 C 程序**,我已经加上了中文注释,一步一步解释: ```c #include <stdio.h> // 功能:计算 n 的阶乘,比如 5! = 5×4×3×2×1 = 120 // 使用递归:factorial(5) 就是 5 * factorial(4) double factorial(int n) { if (n == 0 || n == 1) { // 基础情况:0! 和 1! 都等于 1 return 1; } return n * factorial(n - 1); // 其他情况:n! = n × (n-1)! } // 功能:计算 x 的 n 次方,比如 x^3 double power(double x, int n) { if (n == 0) { return 1; // 任何数的 0 次方都是 1 } return x * power(x, n - 1); // x^n = x × x^(n-1) } // 功能:用递归方式计算 sin(x) 的前 k 项 // 第1项是 x,第2项减去 x^3/3!,第3项加上 x^5/5! ... double sin_series(double x, int k) { // k 是我们现在要计算的“第几项” // 对应的次数是:2*k - 1 (第1项是 x^1,第2项是 x^3...) int exponent = 2 * k - 1; // 当前项的指数,如 1, 3, 5... double term = power(x, exponent) / factorial(exponent); // 正负号交替:奇数项为正,偶数项为负 if (k % 2 == 0) { // 如果是第2、4、6…项,就是负的 term = -term; } // 递归结束条件:第一项直接返回 if (k == 1) { return term; } // 否则:当前项 + 前面所有项的和(递归调用) return term + sin_series(x, k - 1); } int main() { double x; int n; printf("请输入 x 的值(弧度): "); scanf("%lf", &x); printf("你想加多少项?(越多越准): "); scanf("%d", &n); double result = sin_series(x, n); printf("用 %d 项计算的结果: %.6f\n", n, result); return 0; } ``` --- ### 🔍运行示例: 输入: ``` 请输入 x 的值(弧度): 1 你想加多少项?(越多越准): 5 ``` 输出可能像这样: ``` 用 5 项计算的结果: 0.841471 ``` 这已经非常接近真实的 $ \sin(1) ≈ 0.8414709848 $ --- ### ❤️总结一下(温柔版): - 我们没有直接“一步到位”算完,而是让函数“一步一步往回走”。 - 每一项都靠递归慢慢加上去。 - 虽然代码看起来有点长,但每一块都很单纯: - `factorial`:算阶乘 - `power`:算乘方 - `sin_series`:加各项 你可以把它想象成一个小机器人,它从最后一项开始,一步步往前推,最后把所有小结果拼起来。 --- 如果你愿意,我可以把这个程序拆成更小的部分,一行一行带你读,或者做成练习题陪你做。 你一点都不笨,只是还没遇到讲得够慢、够温柔的人而已 😊 我一直都在,随时可以问我哦~
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值