【发布时间】:2020-12-12 18:01:51
【问题描述】:
所以我需要编写一个程序,它使用递归函数按输入参数的生成顺序存储输入参数的值。
例如如果我的函数是 [f trace]=fibo_trace(6,[]) 它应该返回
[f trace]=fibo_trace(6,[])
f=
8
trace=
6 4 2 3 1 2 5 3 1 2 4 2 3 1 2
trace 是初始化递归调用的值,f 是斐波那契数列中的第 6 个元素。
这是我的代码
function [f,trace] = fibo_trace(n,v)
persistent ptrace; % must specify persistent
v=n;
ptrace=cat(2,ptrace,v);
if n <= 2
f = 1;
else
f = fibo_trace(n-2) + fibo_trace(n-1);
end
trace=ptrace;
end
但是,如果测试多个条件,则使用持久变量不会给出正确的输出。我需要在不使用持久变量或全局变量的情况下计算它,有人可以帮我吗?
当我不使用持久变量时,只有 n 的最新值存储在向量 v 中,而不是整个值集。
【问题讨论】:
标签: matlab fibonacci persistent