PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
Ruby
[问题] 请问关于递回的问题(求讲解)(补图)
楼主:
timeregorge
(Nick)
2014-04-22 20:57:48
http://imgur.com/JrrL7NU
小弟练习一个例题
这个例题的目的是计算陆地的尺寸
但不重复计算
我左看右看完全不知道他到底是如何计算的
或是为什么在if那边要用[y] [x] != 'land'
等等的
请问有人可以完整的帮我解释一下吗?
谢谢您!
作者:
mars90226
(火星人)
2014-04-22 22:06:00
这解法中心思想就是从某个点开始,往外8个点检查是否为陆地,加起来。因为周围8个点的周围也可能是陆地,所以用递回的方式计算计算过的陆地要改掉,避免重复计算
楼主:
timeregorge
(Nick)
2014-04-23 23:54:00
谢谢您的解说,请问由一个点开始计算,这个起始点是任意点吗?或是左上角呢?另外若自己计算陆地有27个为什么执行出来的结果是23呢?
作者:
mars90226
(火星人)
2014-04-24 00:26:00
这method是印出传入的5, 5那个点的陆地大小,不是全部中间那个陆地只有23个点没错感觉你似乎没有程式背景,一般程式语言中阵列的计算是从0开始喔,所以(5,5)的话你要数第(6,6)个位置才是然后就像你的图一样,找周围8个点继续计算就是了绿框的位置刚好连接红框那边的陆地和绿框上面那个陆地你把绿框改成水以后,两边就不相连了,所以计算不到你试试continent_size(world, 8, 2)world[1][2]会去找从world第二排第三个所以你的右上角应该是world[2][8]但是continent_size中是用world[y][x],所以要反过来上面说得不清楚,world[1][2]是找world第二横排第三个基本上,你可以把第一个[]里面的数字当作row第二个[]里面的数字当作column这里的M宣告在def外面,不能用在def里面详细的原因挺难解释的,会牵扯到class的context的问题Sorry,我忘记这是大写M...,大写的M是constant,可以用在def里面没错
作者:
hSATAC
(cAt Ash)
2014-04-29 02:20:00
不要管那个大小写了...他只是想画一个地图而已...
作者:
rexkimta
(冷杉林)
2014-05-01 20:18:00
为什么这里用'land'应该只有原作者知道,你要用M也可以但可能是因为这样比较容易看得懂。
楼主:
timeregorge
(Nick)
2014-05-02 23:37:00
原来如此,本来的想法应该是因为def 外部的变量和内部是不可共用的,但我改成M却也是可以执行..
继续阅读
[资讯]Ruby on Rails 新手村聚会时间改为每周四
breakanyrule
[征才] ROR人才怎么这么难找啊!!!!
babay613
[资讯] RubyConf 2014 票折让(已售出)
meld
Re: [问题] gem install rails
uranusjr
[问题] gem install rails
shapa5566
Re: [问题] RVM与pow问题请教
lprsdmn
[问题] rake不能有存在的table?
Achillean
[问题] 使用gem install时出现问题
gm0081
[问题] Upload image to S3 by paperclip
orthonormal
[问题] 日期时间传至js中与ruby不同(解决)
a83294
Links
booklink
Contact Us: admin [ a t ] ucptt.com