不带if-else&;C语言中的return语句

不带if-else&;C语言中的return语句,c,C,解决方案中的每个人都使用if-else语句和return语句提供函数,这是我不想要的。我已经清楚地提到,不应该有if-else和return语句。这就是为什么在我的程序中我也没有使用它 我想知道我们是否可以使用递归编写数字的阶乘,而不使用任何if-else语句和return语句。如果是的话,怎么办 我试过这样的方法: int n; int fact=1; factorial(){ while(n){ fact= fact * n; n--; factori

解决方案中的每个人都使用if-else语句和return语句提供函数,这是我不想要的。我已经清楚地提到,不应该有if-else和return语句。这就是为什么在我的程序中我也没有使用它

我想知道我们是否可以使用递归编写数字的阶乘,而不使用任何if-else语句和return语句。如果是的话,怎么办

我试过这样的方法:

int n;
int fact=1;
factorial(){
    while(n){
        fact= fact * n;
        n--; factorial();
    }
}
main(){
    n = 5;
    factorial();
    printf("%d",fact);
}
上面的程序正确地给出了数字的阶乘,但是递归调用在这里只是一个伪调用。递归调用实际上没有做任何事情。 那么,是否有可能在不使用return语句的情况下使用递归编写数字的阶乘&如果递归调用实际上有助于查找阶乘,您可以尝试以下方法:

int factorial (int t) /*t = factorial*/
{ 
    int r; /*result*/
    if (t == 1) /*if t = 1 the recursion will end*/
    { 
        return 1; 
    } 
    r = t * factorial(t - 1) ; /*calling the function again with times - 1*/
return r;                      /*will make recursion until t = 1          */
}

希望它能起作用。

我认为您使用C的方式是错误的,因为使用全局变量n是错误的做法。它必须是函数阶乘的一个参数。
int result;

void factorial(int n)
{
  (result = 1, n <= 1) || (factorial(n - 1), result *= n);
}

int main()
{
   factorial(5);
   printf("%d\n", result);
}
一旦这个问题得到解决,我们就可以处理您提出的问题

我认为没有必要限制自己“不使用”if-else语句。
无论如何,在C中很容易做到,因为我们有三元运算符。
例如,以下各项:

char c = (3<4)? 'y': 'n';  

charc=(3使用递归帮助函数:

int helperfact(int *m, int *n){
    *n>0 && ( *m *= (*n)--, helperfact(m, n)); 
}

void fact(int n){
    int m = 1;
    helperfact(&m,&n);
    printf("%d\n",m);
}

int main(void){
   fact(10);
   fact(0);
   return 0;
}
输出:

3628800
1

@user3100115的可能重复:不是重复,问题是如何在没有if的情况下递归执行-else@Veltas是的!有些答案没有使用if-else。甚至还有与您的答案相同的答案,但是没有
return
?这个要求是毫无意义的武断。为什么
return
被禁止?不清楚您想要什么,我f字面上没有
if
-
else
则很容易,如果字面上没有任何逻辑则在概念上是不可能的。这不符合OP的要求,即没有
if
return
。如果你把
break;
放在
而不是
return 1;
?@dbushI已经明确规定不应该有任何逻辑if-else语句和return语句我知道如何找到一个有递归或无递归的数字的阶乘,但这不是我的解决方案我已经明确规定,不应该有任何if-else语句和return语句我知道如何找到一个有递归或无递归的数字的阶乘,但这不是我的解决方案ommited了文本中不需要返回语句的部分。另一方面,没有返回语句的函数?很抱歉,但这不是C。我知道我们有一个turnery运算符I C用于If..否则..我很早就开始编程了,是的,可以编写一个阶乘函数,它使用递归而没有任何返回语句&否则
char c;
if (3<4)
  c = 'y';
else
  c = 'n';
 int factorial(int n) {
    return (n <= 1)? 1: factorial(n-1);
 }
int helperfact(int *m, int *n){
    *n>0 && ( *m *= (*n)--, helperfact(m, n)); 
}

void fact(int n){
    int m = 1;
    helperfact(&m,&n);
    printf("%d\n",m);
}

int main(void){
   fact(10);
   fact(0);
   return 0;
}
3628800
1