如何修改C#代码实现递归计算到指定kn次迭代的数学函数
调整后完整递归实现代码
static void Main(string[] args) { var k0 = Convert.ToInt32(Console.ReadLine()); var kn = Convert.ToInt32(Console.ReadLine()); var result = Calculate(k0, kn); // 可自行添加输出逻辑查看结果:Console.WriteLine(result); } // 保留原方法签名,无需修改Main调用逻辑 private static double Calculate(int k0, int kn) { // 递归终止:迭代次数为0时直接返回当前值 if (kn == 0) return k0; // 单次迭代计算逻辑与原规则完全一致 var currentK = Math.Round(Math.Pow(Math.Sqrt(k0) + Math.Sqrt(Math.PI), 2)); // 迭代次数减1,进入下一层递归 return Calculate((int)currentK, kn - 1); }
补充说明
如果不需要严格保留int类型的入参,避免迭代过程中强制类型转换丢失精度,也可以调整为双参数类型兼容的重载版本:
private static double Calculate(int k0, int kn) { return CalculateCore(k0, kn); } private static double CalculateCore(double currentK, int remainingIterations) { if (remainingIterations == 0) return currentK; var nextK = Math.Round(Math.Pow(Math.Sqrt(currentK) + Math.Sqrt(Math.PI), 2)); return CalculateCore(nextK, remainingIterations - 1); }
两种实现都完全遵循给定的迭代计算规则,输入kn为多少就执行多少次迭代后返回对应结果,输入kn为0时会直接返回初始k0值。
内容的提问来源于stack exchange,提问作者Abdullah Akçam
相关产品推荐
相关产品推荐

