我正在尝试运行以下代码:
function inversePoly(A::Array{Int64,1}, B::Array{Int64,1})
n = size(A)
retVal = A[end] / B[end]
i = 1
while i != n
retVal = (retVal + 1 / B[n - i]) * A[n - i]
i += 1
end
return retVal
end
inversePoly(Array(3:4), Array(4:5))
Run Code Online (Sandbox Code Playgroud)
但是,朱莉娅给我以下错误:
LoadError: MethodError: no method matching -(::Tuple{Int64}, ::Int64)
Closest candidates are:
-(!Matched::Complex{Bool}, ::Real) at complex.jl:298
-(!Matched::Missing, ::Number) at missing.jl:97
-(!Matched::Base.CoreLogging.LogLevel, ::Integer) at logging.jl:107
...
in expression starting at /home/francisco/Julia/abc.jl:12
inversePoly(::Array{Int64,1}, ::Array{Int64,1}) at abc.jl:6
top-level scope at none:0
Run Code Online (Sandbox Code Playgroud)
第六行是
retVal = (retVal + 1 / B[n - i]) * A[n - i]
Run Code Online (Sandbox Code Playgroud)
这意味着该声明
n = size(A)
Run Code Online (Sandbox Code Playgroud)
正在将元组保存在变量n中,而不是整数中
如何获得表示A中元素数量的整数?
提前致谢
这是您应该如何使用size:
julia> x = [1,2,3]
3-element Array{Int64,1}:
1
2
3
julia> size(x)
(3,)
julia> size(x)[1]
3
julia> size(x, 1)
3
Run Code Online (Sandbox Code Playgroud)
因此,可以从中提取第一个元素,size(x)或者通过1作为第二个参数传递来直接指定要提取的维度。
在你的情况下,A是一个Vector(是单维)你也可以使用length:
julia> length(x)
3
Run Code Online (Sandbox Code Playgroud)
直接给你一个整数。
length和之间的区别size如下:
length 为集合(不仅是数组)定义并且返回一个整数,该整数为您提供集合中元素的数量size返回a,Tuple因为通常它可以应用于多维对象,在这种情况下,元组具有与对象维数一样多的元素(因此Vector,在您的问题中,它是1元素元组)| 归档时间: |
|
| 查看次数: |
300 次 |
| 最近记录: |