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,但是当它返回主脚本值时消失了。
答案 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