当前位置:编程学习 > C/C++ >>

为什么在C语言中这个程序运行不了,哪位高手帮帮忙吧!

#include <stdio.h> long fun(int n) { if (n>1) return (n*fun(n-1)); return fun(1); } main() { printf("10!=%ld\n", fun(10)); } 按了运行后,弹出了该有的界面,写有press any key to coutune 但是一按回车界面就消失了,这个是出什么问题了啊!
答案:#include "stdAfx.h"
#include<stdio.h>
long fun(int  n)
{
if (n>1)
return (n*fun(n-1));
return 1;//递归结束后 返回整数 不要返回fun(1);
}
main()
{
printf("10!=%ld\n", fun(10));
}
其他:堆栈溢出了, 你在不停的调用  fun(1) 很正常啊,C就是如此,如果运行正常,就会出现“press any key to coutune ” 改下:

long fun(int  n)
{
if (n>1)
return (n*fun(n-1));
return 1;
} 1
return fun(1);
//改为:
return 1;
 
2如果是VC++,按Ctrl+F5运行试试。 #include <stdio.h>
long fun(int  n)
{
if (n>1)
return (n*fun(n-1));
else  return 1;
}
main()
{
printf("10!=%d\n", fun(10));
}
你再试试吧 fun函数没有返回具体的数,因为最后一直返回fun(1),但fun(1)是什么值不知道啊... {
if (n>1)
return (n*fun(n-1));
return fun(1);//这个不对,最后应该返回的是 1,而不是fun(1),看你的程序是求阶乘。
}                   //  如果是返回fun(1),这个fun(1)是多少啊,程序没指定,所以出错。
改为:
{
if (n>1)
return (n*fun(n-1));
else
return 1;
} 

上一个:诚求旅行商问题的解决的算法,不胜感激!!!望有注释
下一个:C++中如何将两个连续的string 类型存入到文件中并读取出来?

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,