【发布时间】:2020-11-12 10:12:25
【问题描述】:
我需要对一系列函数进行操作
h_k(x) = (I + f_k( ) )^k g(x)
对于每个 k=1,...,N.
一个基本的例子(N=2,f_k=f)如下:
f(x) = x^2
g(x) = x
h1(x) = g(x) + f(g(x))
h2(x) = g(x) + f(g(x)) + f(g(x) + f(g(x)))
println(h1(1)) # returns 2
println(h2(1)) # returns 6
我需要在循环中编写它,最好在每次迭代时重新定义 g(x)。不幸的是,在不与 g(x) 的递归定义的语法冲突的情况下,我不知道如何在 Julia 中执行此操作。确实,
f(x) = x^2
g(x) = x
for i=1:2
global g(x) = g(x) + f(g(x))
println(g(1))
end
导致 StackOverflowError。
在 Julia 中,使用之前的定义重新定义 g(x) 的正确方法是什么?
附:对于那些建议可以通过递归解决这个问题的人:我想使用 for 循环,因为函数 f_k(x)(在上面,每个 f_k = f)是如何在这个派生的实际问题中计算出来的.
【问题讨论】: