考研递归怎么算?

施棋祥施棋祥最佳答案最佳答案

1. 简单说,递归就是重复调用本身。比如 函数 f(x)=f(x-1)+2 的根的近似解(精确到 10^{-6}): 2. 对这个例子而言,求解的过程其实就是将函数进行泰勒展开,然后化简得到一个关于 x 的一次方程,进而解出 x 的值。这个过程其实就包含在了 f 和 g 的定义中。这里需要注意的是,由于我们使用了一个比 1e-6 要大的数字作为停止迭代的条件,所以实际上当循环两次以上时,答案已经接近于真正的解了(当然,在计算机科学里,不可能让循环次数超过 100,这是因为计算机运行并非无限的,而真正有效的计算量其实是比这要小的多)。

3. 题主的问题其实在上面那个例子已经回答了——如果希望计算速度快一些的话,只需要更换掉泰勒展开的时候把 f(x) 看成是 f(x-1) 即可。这时候整个函数的循环将被压缩到只有一步,因此效率将会提高很多(因为不再需要重新乘平方)!注意这里并不是说这个算法更快,而是说使用这种变换下的算法,只要其循环足够多次(大于等于 3),那么结果必然会接近于正确解。而这种情况下,理论上说,循环的次数越多,那么计算结果的精确度也就越高。

4. 对于更一般的函数来说,如果希望将其展开成一个无穷级数来求得渐近解,那么可以使用幂级数方法或拉普拉斯变换的方法。对于后者,可以参考本书第二章的内容。

公孙楠伟公孙楠伟优质答主

1、你说的递归是数学中的一种方法,用于求解方程或求函数值时无法直接计算出解的情况; 2、用这种方法解决的是“无界”的问题——“求值域”的题目。 因为这类题目要求我们最终求得答案是无界的(即无穷大)所以通常需要使用一些特殊的技巧和思路来解决它们——比如通过构造无穷级数来计算其极限来得到答案。

3、其实这种问题在编程领域也是经常遇到的一类问题——对于程序的编译或者软件工程的调试过程中,常常会出现诸如“找不到某函数/变量定义”等问题而使得我们无法继续执行下去直至得到结果。这些问题的解决方法同样可以用递归的方法来完成。 所以我认为题主可以尝试自己试着做一做这样的难题看看是否能找到一种通用的处理方法。

发表评论
请发表正能量的言论,文明评论!