这是我的阶乘程序,它正在执行并给出正确的结果:
#include <stdio.h>
int main()
{
int n;
printf("enter the no=");
scanf("%d", &n);
fun(n);
printf("%d\n", fun(n));
return 0;
}
int fun(int n)
{
if(n == 0)
return 1;
else
return fun(n - 1) * n;
}
这是我的程序,用于计算数字的幂—这是0,而不是正确的结果,但几乎相同:
#include <stdio.h>
int main()
{
int m, n;
printf("enter the no=");
scanf("%d%d", &m, &n);
pow(m, n);
printf("%d\n", pow(m, n));
return 0;
}
int pow(int m, int n)
{
if(n == 0)
return 1;
else
return pow(m, n - 1) * m;
}
两者都在同一编译器上运行。
为什么我的阶乘程序正常工作,而我几乎相同的幂程序却无效?
这里有一些问题。首先,在第一次调用函数之前,您没有为函数声明原型。为此,您需要将int pow(int, int);
放在main
上方。这使编译器确切地知道您的函数期望什么以及返回什么。
pow
是其中之一。