当前位置:主页 > Office办公 > 递归

递归

Excel中计算阶乘(n!)的VBA代码
Excel中计算阶乘(n!)的VBA代码

在Excel中可以通过FACT函数来计算非负整数n的阶乘(n!),而如果要通过VBA来计算阶乘,可以用下面的两个自定义函数:1.使用循环:Function Factorial_a(ByVal Num As Integer)If Num < 0 ThenFactorial_a = "#NUM!"ElseFactorial_a = 1For i = 1 To NumFactorial_a = Factorial_a * iNextEnd IfEnd Function2.使用递归:Function Factorial_b(ByVal Num As Integer)If Num < 0 ThenFactorial_b = "#NUM!"ElseIf Num = 0 Or Num = 1 ThenFactorial_b = 1ElseFactorial_b = Num * Factorial_b(Num – 1)End IfEnd Function

126 次浏览
Excel用循环公式解递归方程
Excel用循环公式解递归方程

一个递归方程定义为一个等式,该等式中,变量出现在等号的两端。下面的等式都是递归方程的例子  x=1/(x+1)  x=COS(x)  x=SQRT(x+5)  x=2^(1/x)  x=5+(1/x)  要解递归方程,就要确保迭代计算设置处于打开状态。然后把递归方程变换成自引用公式。要求解第一个方程,在单元格A1中输人下面的公式:  =1/(A1+1)  该公式收敛到0.618033988749895,即它是满足方程的x的值。  有时,该技巧不一定好用。例如,考虑下面的递归方程:  x=5+(1/x)  如果把下面的公式输入到单元格A1中,我们会发现它返回#DIV/O!错误,因为递归从0开始(被0除导致出错):  =5+(1/A1)  要求解这类方程,我们需要使用两个单元格。下面给出一步一步的命令演示:  1.在单元格A1中输入任意一个非零的数值,把下面的公式输入到单元格A2中:  =5+(1/A1)  2.把下面的公式输入到单元格A1中:  =A2  单元格A1和A2都显示5.19258235429625,x的值满足该方程。请注意,第一步,输入一个非零的数值实质上是为递归提供一个非零的种子。用公式(第2步)代替这个数值后,单元格A1中的初始值也作为单元格A2中公式的初始值。

222 次浏览