看起来错误是在传递
函数时,在正确的代码下面,解决了这个问题:
函数(limits,f::function)
prefix,start,stop=limits.args[2].args
out=0
对于i=开始:停止
输出+= f(i)
结束
外面的
结束
结果=(:(i=1:6),n->(6n+2))
@显示结果
< /代码>
![](“https://i.stack.imgur.com/sfvfj.png”alt=“enter)
其他4种解决方法是:
使用对
Julia>函数(限制,F::函数)
out=0
开始=限制。首先
停止=限制.秒
对于i=开始:停止
输出+= f(i)
结束
外面的
结束
(1方法的通用函数)
Julia>(1=>6,n->(6n+2))
一百三十八
< /代码>
和
使用范围
Julia>函数(范围,F::函数)
out=0
I=范围
输出+= f(i)
结束
外面的
结束
(1方法的通用函数)
Julia>(1:6,N->(6N+2))
一百三十八
< /代码>
最后一个选项,可以重写为:
函数(range,f::function)
out=0
(对于i=范围;out+=f(i);结束)
外面的
结束
结果=(1:6,n->(6n+2))
@显示结果
< /代码>
通过使用已经存在的sumfunction,下面是一行代码:
(range,f::function)=sum(f(i)for i in range)
结果=(1:6,n->(6n+2))
@显示结果
< /代码>
或者,简单地说:
f(n)=6n+2
结果=总和(n=1:6时f(n)
@显示结果
< /代码>
也可以简化为:
f(n)=6n+2
结果=总和(f,1:6)
@显示结果
< /代码>
![enter image description here](https://i.stack.imgur.com/sfvfj.png)
其他4种解决方法是:
# Using Pair
julia> function Σ(limits, f::Function)
out = 0.0
start = limits.first
stop = limits.second
for i = start:stop
out += f(i)
end
out
end
Σ (generic function with 1 method)
julia> Σ(1=>6, n->(6n + 2))
138.0
而且,
# Using range
julia> function Σ(range, f::Function)
out = 0.0
for i = range
out += f(i)
end
out
end
Σ (generic function with 1 method)
julia> Σ(1:6, n->(6n + 2))
138.0
最后一个选项,可以重写为:
function Σ(range, f::Function)
out = 0.0
(for i = range; out += f(i) ; end)
out
end
result = Σ(1:6, n->(6n + 2))
@show result
通过使用已经存在的sum
函数,下面是一个单行函数:
Σ(range, f::Function) = sum(f(i) for i in range)
result = Σ(1:6, n->(6n + 2))
@show result
或者,简单地说:
f(n) = 6n + 2
result = sum(f(n) for n=1:6)
@show result
也可以简化为:
f(n) = 6n + 2
result = sum(f, 1:6)
@show result