本文以C语言为例,不用递归方式编码如下:
#include
long fun1(int n)
{
if(n<=1) return 1;
return fun1(n-1)*n;
}
long fun2(int n)
{
int i;
long m=1;
for(i=1; i<=n; ++i)
m*=i;
return m;
}
int main()
{
printf("%ld\n",fun1(9));
printf("%ld\n",fun2(9));
return 0;
}
扩展资料
用递归方式求解方法:
#include
long fun(int m,int n)
{
if(n==1)
return m;
else
return m*fun(m,n-1);
}
main()
{
int m,n;
long s;
long fun(int,int);
printf("输入m和n的值:");
scanf("%d,%d",&m,&n);
s=fun(m,n);
printf("s=%ld\n",s);
}
我特意测试了一下你的写的函数,应该没什么错误的,找来找去终于找到了解决办法:
printf("输入m和n的值:");
scanf("%d",&m);
scanf("%d",&n);
将输入的两个数分开用两个scanf函数接受就可以了。
如果写一个scanf函数来接受,我发现无论如何m,n的值都接受不了,不知道怎么回事。
scanf函数真是个奇怪的函数。
那段没问题,你的程序的问题是main函数看不到你后面定义的函数,你只需要把main函数移动到其他所有函数定义的后面就可以了。或者在main函数定义之前加上下面的两行函数声明:
long fun(int, int);
void yzj();
1)可能输入本身错误
2)可能文件不存在
3)可能文件内容错