acm 提交下面代码提示SIGSEGV 怎么回事 哪位大神能指教下,谢谢!!!
题目:Description
现在有一列人,从1到n对这n个人进行编号,现在这n个人开始排队,有一个排队规则就是编号为i的人不能站在第i位上,问n个人进行排队,有多少种可能的排队方法。
Input
输入包括多组测试数据,每组测试数据含一个整数n,代表一共有n个人进行排队(1<=n<=1000)。
Output
输出包括一个整数,代表有多少种可能的排队方法。
Sample Input
3
4
6
Sample Output
2
9
265
我的代码:
#include<stdio.h>
int fun(int n)
{
int f;
if(n==2)
f=1;
else if(n==3)
f=2;
else f=(n-1)*(fun(n-2)+fun(n-1));
return f;
}
int main()
{
int n;
while(scanf("%d",&n)!=-1)
{
printf("%d\n",fun(n));
}
return 0;
}