triviumgo 发表于 2018-10-16 23:14:05

哪错了啊?

#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);
}

ba21 发表于 2018-10-16 23:20:50

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);
}

风扫地 发表于 2018-10-17 10:29:03

1.数据初始化问题,详见楼上;
2.int fuck(); 很明显你的代码实现中,这个函数是没有返回值的,返回值改成void类型。

pheron 发表于 2018-10-17 10:32:02

z没有初始值,z=z*a,用z*a,只知道a的值,没有z的值怎么计算?

joybyte 发表于 2018-10-17 15:08:34

z定义为全局变量,系统自动初始化为0.所以你的程序结果是0。
另外写程序多关注一下风格问题。函数名的命名,提示语,定义函数类型了相对应的返回值。。。等等

Hunter_Hunry 发表于 2018-10-17 18:45:05

#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]
查看完整版本: 哪错了啊?