我正在使用以下代码完成一个非常简单的编程练习:
using System;
namespace Factorial
{
class MainClass
{
static int fives(int x) {
int r = 0;
while(x % 5 == 0) {
r++;
x /= 5;
}
return r;
}
static int z(int x) {
if (x == 1)
return 0;
else
return z (x-1) + fives (x);
}
public static void Main (string[] args)
{
int testCases = Convert.ToInt32 (Console.ReadLine ());
int[] xs = new int[testCases];
for (int i=0; i<testCases; i++)
xs [i] = Convert.ToInt32 (Console.ReadLine ());
foreach (int x in xs)
Console.WriteLine (z (x));
}
}
}
小数字似乎可以正常工作,但是示例中的 8735373 会打印“分段错误:11”。这是否意味着由于递归太深而导致内存不足?是什么原因造成的?
(我在 Mac 上的 Mono 2.10.8 中运行 C#。)
PS:如果有人对 excersize 本身感兴趣,这是我的最终解决方案(更加优化)。