不用递归方式,编写函数fun,求任一整数m的n次方

2024-11-26 16:29:25
推荐回答(4个)
回答1:

本文以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);

}

回答2:

我特意测试了一下你的写的函数,应该没什么错误的,找来找去终于找到了解决办法:
printf("输入m和n的值:");
scanf("%d",&m);
scanf("%d",&n);
将输入的两个数分开用两个scanf函数接受就可以了。

如果写一个scanf函数来接受,我发现无论如何m,n的值都接受不了,不知道怎么回事。
scanf函数真是个奇怪的函数。

回答3:

那段没问题,你的程序的问题是main函数看不到你后面定义的函数,你只需要把main函数移动到其他所有函数定义的后面就可以了。或者在main函数定义之前加上下面的两行函数声明:
long fun(int, int);
void yzj();

回答4:

1)可能输入本身错误
2)可能文件不存在
3)可能文件内容错