Ruby 帕斯卡';红宝石三角
我正在用Ruby编写Pascal三角形,但不断收到错误消息: rb:3:在“三角形”中:未定义的方法“each” 4:Fixnum(NoMethodError)Ruby 帕斯卡';红宝石三角,ruby,pascals-triangle,Ruby,Pascals Triangle,我正在用Ruby编写Pascal三角形,但不断收到错误消息: rb:3:在“三角形”中:未定义的方法“each” 4:Fixnum(NoMethodError)来自pascalsTriangle.rb:18 最终的源代码: def triangle(n) (0..n).each{|r| lst=[1] term=1 k=1 (0..r-1).step(1){|index|
来自pascalsTriangle.rb:18 最终的源代码:
def triangle(n)
(0..n).each{|r|
lst=[1]
term=1
k=1
(0..r-1).step(1){|index|
term=term*(r-k+1)/k
lst.push term
k+=1
}
p lst
}
end
triangle(4)
变化:
出现语法错误李>
导致被零除的k=0
上的逻辑错误李>
(0..r+1)
更改为(0..r-1)
数组没有append
方法。更改为“推送”
p
代替print
def triangle(n)
(0..n).each{|r|
lst=[1]
term=1
k=1
(0..r-1).step(1){|index|
term=term*(r-k+1)/k
lst.push term
k+=1
}
p lst
}
end
triangle(4)
变化:
出现语法错误李>
导致被零除的k=0
上的逻辑错误李>
(0..r+1)
更改为(0..r-1)
数组没有append
方法。更改为“推送”
p
代替print
为什么用Ruby编写C风格的代码?:-) 分解问题可以让您一次只关注一个问题,迭代器可以使代码更具可读性。我用二项式定理来计算三角形中的值。如果不需要三角形中的超大值,这将足够快 在我的虚拟linux上计算第1000行需要2.9秒:
# factorial method
def fact(n)
(1..n).reduce(:*)
end
# binomial theorem, n choose k
def binomial(n,k)
return 1 if n-k <= 0
return 1 if k <= 0
fact(n) / ( fact(k) * fact( n - k ) )
end
def triangle(nth_line)
(0..nth_line).map { |e| binomial(nth_line, e) }
end
p triangle(5)
因式分解法
def事实(n)
(1..n).减少(:*)
终止
#二项式定理,n选择k
def二项式(n,k)
如果n-k为什么用Ruby编写C风格代码,则返回1:-) 分解问题可以让您一次只关注一个问题,迭代器可以使代码更具可读性。我用二项式定理来计算三角形中的值。如果不需要三角形中的超大值,这将足够快 在我的虚拟linux上计算第1000行需要2.9秒:
# factorial method
def fact(n)
(1..n).reduce(:*)
end
# binomial theorem, n choose k
def binomial(n,k)
return 1 if n-k <= 0
return 1 if k <= 0
fact(n) / ( fact(k) * fact( n - k ) )
end
def triangle(nth_line)
(0..nth_line).map { |e| binomial(nth_line, e) }
end
p triangle(5)
因式分解法
def事实(n)
(1..n).减少(:*)
终止
#二项式定理,n选择k
def二项式(n,k)
如果n-k- 阶乘(num),获取一个数字并返回其阶乘李>
- find_num(n,k),是pascales三角形的数学公式!n/ !k*!(n-k)——“!”=数的阶乘
- 最后是pascale(num),它通过 映射(n)中每行的索引号或(k)
- 如果您想真正了解这是如何工作的,请对 pascale,只需通过find_num((行编号)运行数字, (索引编号))。然后将其与三角形的图片进行比较 你自己的魔力
def find_num(n,k)
结果=阶乘(n)/(阶乘(k)*阶乘(n-k))
终止
def pascale(数值)
i=0
比例=75
而我
- 阶乘(num),获取一个数字并返回其阶乘李>
- find_num(n,k),是pascales三角形的数学公式!n/
!k*!(n-k)——“!”=数的阶乘
- 最后是pascale(num),它通过
映射(n)中每行的索引号或(k)
- 如果您想真正了解这是如何工作的,请对
pascale,只需通过find_num((行编号)运行数字,
(索引编号))。然后将其与三角形的图片进行比较
你自己的魔力
-
def find_num(n,k)
结果=阶乘(n)/(阶乘(k)*阶乘(n-k))
终止
def pascale(数值)
i=0
比例=75
而我