C语言:用递归方法求n!

img


不懂就问,看不太懂它是怎么运行下去的 大家帮忙看看吧(机房C语言里面的题库)

供参考:

float fac(int n)
{
    float f;
    if (n < 0)
        printf("n<0,data error!");
    else
        if (n == 0 || n == 1)
            f = 1;
        else
            f = n * fac(n - 1);  // 【1】
    return f;
}


n = input("Please enter an integer (or 'default' for 2): ")

if n == "default":
    n = 2
else:
    n = int(n)

for i in range(n):
    for j in range(n):
        print("*", end="")
    print()

首先使用input()函数获取用户输入,并将其存储在变量n中。如果用户输入的是字符串"default",我们将n设置为2,否则将n转换为整数。然后,我们使用两个嵌套的for循环来输出n*n的号组成的矩阵。在内部循环中,我们使用print()函数输出一个号,并使用end=""参数指定不要在输出后添加换行符。最后,在外部循环中,我们使用print()函数输出一个换行符,以便在每行结束后换行。

需要注意的是,在处理用户输入时,我们需要进行适当的错误处理,以避免出现异常情况。例如,在将用户输入转换为整数时,如果用户输入的是无效的字符串,将会引发ValueError异常。为了避免这种情况,我们可以使用try-except语句来捕获异常,并在出现异常时给出适当的提示信息。