简单循环中超过256的递归深度

时间:2013-10-09 18:47:49

标签: recursion wolfram-mathematica

我正在尝试使用迭代过程创建一个非常基本的循环来创建一系列函数。我多年前使用过早期版本的 Mathematica 并认为这很有效。任何帮助将不胜感激。

这是应用于函数g(x)= x的基本思想。我不断收到超过256的递归深度的错误。它也没有显示情节。

g[x_] := x;
For[i = 1, i < 4, i++, 
 f1[x_] := .25*g[2*x] + .25*2*x;
 f2[x_] := .25*g[2*x - 1] - .25*(2*x - 1) + .25;
 g[x_] := If[0 <= x <= .5, f1[x], f2[x]]
];
Plot[g[x], {x, 0, 1}, PlotRange -> {{0, 1}, {0, 1}}]

1 个答案:

答案 0 :(得分:1)

你想绘制一些点x,g [x]。 好的,需要弄清楚g [x]是什么。 好吧,恰好是f1 [x]。 好的,需要弄清楚f1 [x]是什么。 这被定义为g [x]。 好的,需要弄清楚g [x]是什么。 好吧,恰好是f2 [x]。 好的,需要弄清楚f2 [x]是什么。 这被定义为g [x]。 这种情况一再发生,直到Mathematica检查失控递归才停止它。

因此,非常清楚地向自己描述您的函数序列应该是什么。 从中仔细考虑如何将其转换为Mathematica代码而不进行无限递归。