我怎样才能在matlab中编写嵌套递归函数

时间:2017-03-22 10:42:57

标签: matlab recursion factorial

    I want to write nested recursive function. 
    Example: Calculate sum of factorial of 1 to n numbers.

myfact(n)函数计算n的阶乘。

function [ fact ] = myfact( x )
temp = 0;
if (x == 1)
    temp = 1;
else
    temp = x*myfact(x-1);
end
fact = temp;
end 

myfactSum()函数计算" myfact"的返回值之和。 factNums是一个包含每个值的阶乘的数组。例如:factNums(2)= 2!

function [total] = myfactSum(n,factNums)
    if(n==1)
       return
    else
    result = myfact(n);
    factNums(n) = result;
    total=sum(factNums);
    myfactSum(n-1,factNums);
    end
end

测试上面的脚本;

n = 4;
factNums = zeros(1,n);
x=myfactnum(n,factNums);

y=0;
for i=1:checkValues
   y=y+myfact(i); 
end

脚本 x = 24,y = 33 的结果 一个递归和循环找到正确的答案,但嵌套的递归函数只返回最后一个值的阶乘。 我尝试调试递归函数,它用函数值的值[1,2,6,24]结束填充factNums,但是当它返回主脚本值时消失了。

variable values after i run the script

1 个答案:

答案 0 :(得分:0)

我改变了myfactSum,它有效:)这很简单:)

function [sum] = myfactnum(n)

temp=1;    
    if(n==0)
       temp=0;
    else
    temp=myfact(n)+myfactnum(n-1);
    end
sum=temp;    
end