二进制*的无效操作数(有'int'和'int*')

Mru*_*kla 2 c recursion pointers factorial

我试图使用递归找出数字的阶乘,并将指针作为函数参数传递.但是这个错误一直出现.经销商和编码员!我需要你的帮助.

The code

#include<stdio.h>

int *factorial(int *);
int value, p=0, q=1, x, tmp;

void main() {
int *result;
    puts("Enter the value::");
    scanf("%d",&value);

    result = factorial(&value);
    printf("\nThe Result is::%d\n", *result);
}
int *factorial(int *n) {
    if(*n == p || *n == q) {
        return(&q);
    }
    else {
        tmp = *n -1;
        *n *= (factorial(&tmp));
        return(n);
    }
}

The error:
error: invalid operands to binary * (have ‘int’ and ‘int *’)
   *n *= (factorial(&tmp));
Run Code Online (Sandbox Code Playgroud)

DNT*_*DNT 5

这一行:

*n *= (factorial(&tmp));
Run Code Online (Sandbox Code Playgroud)

应该

*n *= *(factorial(&tmp));
Run Code Online (Sandbox Code Playgroud)

但是,请小心这个实现,因为它是递归的,但使用指向全局变量的指针.

标准实现不适合您吗?

int factorial(int n)
{
    if(n==0)
        return 1;
    else
        return factorial(n-1)*n;
}
Run Code Online (Sandbox Code Playgroud)

使用标准,您只需提示用户输入非负值.