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 次迭代?
为了避免混淆,我认为您并不是在询问递归函数/方法,这些函数/方法会调用自身直到达到某些所需的条件,然后返回一个值。
使用 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)
您可以通过递归来做到这一点,但在这种情况下,这将是矫枉过正,而且没有必要。