首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

请帮小弟我运行一下,超级简单

2012-03-12 
请帮我运行一下,超级简单我一运行就出错,不知道问题出在哪里。请帮我运行一下,看看结果。谢。//我在VC下编的C

请帮我运行一下,超级简单
我一运行就出错,不知道问题出在哪里。请帮我运行一下,看看结果。谢。

//我在VC下编的C程序,求N!
#include   "iostream.h "
#include   <iomanip>
using   namespace   std;
void   main()
{
int   n;
long   factor(int   n);
printf( "请输入正整数n: ");
scanf( "%d ",&n);
printf( "%d的阶乘是:%g ",n,factor(n));
}
long   factor(int   n)                               //阶乘函数n!
{
if(n==0)
return   1L;
else
return   n*factor(n-1);         //递归用法
}

[解决办法]
#include <stdio.h>
#include <stdlib.h>

int main()
{
int n;
long factor(int n);
printf( "请输入正整数n: ");
scanf( "%d ",&n);
printf( "%d的阶乘是:%ld ",n,factor(n));

system( "pause ");
return 0;
}
long factor(int n) //阶乘函数n!
{
if(n==0)
return 1L;
else
return n*factor(n-1); //递归用法
}

[解决办法]
long factor(int n) //阶乘函数n!
{
if(n==0)
return 1L;
else
return n*factor(n-1); //递归用法
}


假设我传一个3进去,我们来算算看。

先是3 != 0;所以执行else部分。
一直递归,一直递归。。。。。。

还是用3做例子。你首先返回 "3 * factor(2) "
然后程序再把2塞进函数,就返回了 2 * factor (1)
然后再返回 1 * factor (0)
然后程序返回个1。
再回去。
依次,1 * 1 * 2 * 3。

最后,我想问一下,你这到底是C还是C++》不要搞杂交水稻。

热点排行