求助 C++题目,出现堆栈溢出,怎么解决?

// 阶乘相加.cpp: 定义控制台应用程序的入口点。

#include "stdafx.h"
#include
using namespace std;

int fac(unsigned int);
int main()
{
int n = 0;
cin >> n;
while (n > 0)
{
int x = 0;
int y = 0;
x = fac(n);
--n;
y += x;
}
return 0;
}
int fac(unsigned int n)
{
long f = 0;
f = fac(n - 1)*n;
return f;
}

int main()
{
int n = 0;
cin >> n;
int y = 0;
while (n > 0)
{
int x = 0;
x = fac(n);
--n;
y += x;
}
cout >> y;
return 0;
}

int fac(unsigned int n)
{
if (n == 1) return 1;
long f = 0;
f = fac(n - 1)*n;
return f;
}

这样改不会堆栈溢出了,可是怎么调试时调试不出结果?调试出来是这样
6
请按任意键继续. . .