如何将不断增长的递归数学函数转换为代码?

Abd*_*çam 1 c# math

static void Main(string[] args)
{
    var k0 = Convert.ToInt32(Console.ReadLine());
    var kn = Convert.ToInt32(Console.ReadLine());
    var result = Calculate(k0, kn);
}

private static double Calculate(int k0, int kn)
{
    var k1 = Math.Round(Math.Pow(Math.Sqrt(k0) + Math.Sqrt(Math.PI), 2)); // first iteration
    var k2 = Math.Round(Math.Pow(Math.Sqrt(k1) + Math.Sqrt(Math.PI), 2)); // 2nd iteration
    var k3 = Math.Round(Math.Pow(Math.Sqrt(k2) + Math.Sqrt(Math.PI), 2)); // 3rd iteration
    // calculate until kn
    return k3; // this should return kn
}
Run Code Online (Sandbox Code Playgroud)

我应该如何更改此代码,以便它可以递归计算直到第 kn 次迭代?

phu*_*uzi 6

为了避免混淆,我认为您并不是在询问递归函数/方法,这些函数/方法会调用自身直到达到某些所需的条件,然后返回一个值。

使用 for 循环这很容易

private static double Calculate(int k0, int kn)
{
    double result = k0;
    for (var i = 0; i < kn; i++){
        result = Math.Round(Math.Pow(Math.Sqrt(result) + Math.Sqrt(Math.PI), 2));
    }
    
    return result;
}
Run Code Online (Sandbox Code Playgroud)

您可以通过递归来做到这一点,但在这种情况下,这将是矫枉过正,而且没有必要。