MATLAB 递归函数 [阶乘]

MATLAB recursive function [Factorials]

代码有效,但我很困惑。当 n==1 时,我正在分配 a=1,那不应该覆盖值并且 return 只有 1 吗?

format compact
fct(5)

function a = fct(n)
    if n==1
       a = 1; 
    else 
       a = n*fct(n-1);
    end
end

我是这样想的...下面是一个 recursion/factorial 图,显示了递归调用的级联效果。在最深的递归调用中,fct(1) 被计算为等于第一个 if 语句给出的 1。因此,每个递归调用都由更深层次的递归调用定义。我通常喜欢分解递归函数,直到到达其终止情况。我想一种表达方式是“函数中的函数” 与其说是循环。


其中,fct(1) → 1


format compact
fct(5)

function a = fct(n)
    if n == 1
       a = 1;
    else
       a = n*fct(n-1);
       fprintf("%d\n",a);
    end

end

Cumulative/Recursive 结果:

2
6
24
120

ans =
   120

我的首选结构:

format compact
fct(5)

function a = fct(n)
    if n > 1
       a = n*fct(n-1);
    else
       a = n;
    end
end