简单C Xcode程序中的exc_bad_access

EXC_BAD_ACCESS in simple c++ XCODE program

本文关键字:exc bad access Xcode 程序 简单      更新时间:2023-10-16

我是C 的新手,我正在尝试制作一个计算器。我设计了此功能,目的是获取数字的阶乘:

     int factorial(int num1) {
    int sum;
    if (num1 == 1) {
        sum = 1;
    }
    else {
        sum = factorial((num1 - 1) * num1);
    }
    return sum;
}

每当我尝试编译时,我会在

上获得错误exc_bad_access
int factorial(int num1)

知道发生了什么事吗?我正在使用Xcode。

每当num1不是1时,您的定义会导致无限递归。

自己做数学:

  factorial(2)
= factorial((2-1) * 2)
= factorial(2)
= factorial((2-1) * 2)
= ...

  factorial(3)
= factorial((3-1) * 3)
= factorial(6)
= factorial((6-1) * 6)
= factorial(30)
= ...

阶乘功能的递归定义不是

factorial(n) = factorial((n - 1) * n)

factorial(n) = n * factorial(n - 1)

(阶乘不是总和,而是产品。)