哪错了啊?
#include<stdio.h>int a,z;
int fuck();
int fuck()
{
if(a>1)
{
z=z*a;
a--;
fuck();
}
}
int main()
{
printf("qing shu ru yi ge shu zi:");
scanf("%d",&a);
fuck();
printf("%d\n",z);
} z初始化
#include<stdio.h>
int a,z;
int fuck();
z=1;
int fuck()
{
if(a>1)
{
z=z*a;
a--;
fuck();
}
}
int main()
{
printf("qing shu ru yi ge shu zi:");
scanf("%d",&a);
fuck();
printf("%d\n",z);
}
1.数据初始化问题,详见楼上;
2.int fuck(); 很明显你的代码实现中,这个函数是没有返回值的,返回值改成void类型。 z没有初始值,z=z*a,用z*a,只知道a的值,没有z的值怎么计算? z定义为全局变量,系统自动初始化为0.所以你的程序结果是0。
另外写程序多关注一下风格问题。函数名的命名,提示语,定义函数类型了相对应的返回值。。。等等 #include <iostream>
using namespace std;
static int a;
static int z = 1; // 你没有初始化全局变量 z 的值
void fuck(); // 函数的如果不返回任何值的话,最好设置为void
int main(){
cout << "Enter a number: ";
cin >> a;
fuck();
cout << z << endl;
}
void fuck(){
if (a > 1){
z *= a;
a--;
fuck();
}
}
页:
[1]