我如何在matlab中编写嵌套递归函数
how can i write nested recursive function in matlab
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" 的 return 个值的总和。
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
一个递归和循环找到正确答案,但是嵌套递归函数 return 只是最后一个值的阶乘。
我尝试调试递归函数,它用函数值末尾的值 [1,2,6,24] 填充 factNums,但是当它返回到主脚本值时消失了。
我更改了 myfactSum,它起作用了 :) 就是这么简单 :)
function [sum] = myfactnum(n)
temp=1;
if(n==0)
temp=0;
else
temp=myfact(n)+myfactnum(n-1);
end
sum=temp;
end
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" 的 return 个值的总和。 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 一个递归和循环找到正确答案,但是嵌套递归函数 return 只是最后一个值的阶乘。 我尝试调试递归函数,它用函数值末尾的值 [1,2,6,24] 填充 factNums,但是当它返回到主脚本值时消失了。
我更改了 myfactSum,它起作用了 :) 就是这么简单 :)
function [sum] = myfactnum(n)
temp=1;
if(n==0)
temp=0;
else
temp=myfact(n)+myfactnum(n-1);
end
sum=temp;
end