小编use*_*143的帖子

没有递归调用的递归?

在/ prog /上找到了这个.我实际上是GDB它,是的,它确实是一个递归.但它是如何发生的?

// This works on 32-bit x86 Linux with gcc as long as you don't enable optimization.

#include <stdio.h>
#include <stdlib.h>

static void factorial(int in, int *out)
{
  *(&in-1)-=5-5*(1/in);
  *out*=in--;
}

int main(int argc, char **argv) 
{
  int result=1;
  int number=0;

  if (argc!=2) 
    exit(1);

  number=atoi(argv[1]);
  if (number<1)
    exit(2);

  factorial(number, &result);
  printf("%d! = %d\n", number, result);
  return 0;
}


$ ./factorial 3
3! = 6

$ ./factorial 5
5! = 120
Run Code Online (Sandbox Code Playgroud)

c linux recursion gcc

20
推荐指数
2
解决办法
901
查看次数

标签 统计

c ×1

gcc ×1

linux ×1

recursion ×1