|
查看: 6141|回复: 32
|
Recursive vs. Looping (WHILE, FOR.. etc)
[复制链接]
|
|
|
这里的人气不高... 所以小弟来搞些小小的投票...
如果要做 endless looping 或长周期 looping, 各位高手会用哪个方式呢? |
|
|
|
|
|
|
|
|
|
|
发表于 22-3-2011 10:54 PM
|
显示全部楼层
1) recursive loop 根本不能做 endless looping 或长周期 looping
2) 我直接用thread, 没事做,就让thread睡觉。 |
|
|
|
|
|
|
|
|
|
|
发表于 23-3-2011 02:14 AM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 23-3-2011 08:45 AM
|
显示全部楼层
回复 2# chrizyuen2
是的... 可是... 在工作是... 发现有前 developer 如此使用... 有点傻眼.. 还好的是目前 network request 不多. |
|
|
|
|
|
|
|
|
|
|
发表于 24-3-2011 01:25 AM
|
显示全部楼层
回复 chrizyuen2
是的... 可是... 在工作是... 发现有前 developer 如此使用... 有点傻眼.. 还好 ...
eh2001 发表于 23-3-2011 08:45 AM 
我非常怀疑一件事情。 我认为你的前developer用了更高级技术 -》非同步委托 (async callback).
而不是你说的recursive loop.请你去查证。 |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 24-3-2011 07:50 AM
|
显示全部楼层
我非常怀疑一件事情。 我认为你的前developer用了更高级技术 -》非同步委托 (async callback).
而不 ...
chrizyuen2 发表于 24-3-2011 01:25 AM 
- private void waitSignal(){ try { byte[] buff = new byte[256]; DatagramPacket packet = new DatagramPacket(buff, buff.length); server_socket.receive(packet);
- processPacket(packet);
- waitSignal(); }catch (Exception exp){ exp.printStackTrace(); } }
复制代码
两者的差别... 我应该不会看错吧. |
|
|
|
|
|
|
|
|
|
|
发表于 24-3-2011 08:20 AM
|
显示全部楼层
本帖最后由 chrizyuen2 于 24-3-2011 08:34 AM 编辑
回复 6# eh2001
囧 , 他那么牛,我也没办法。
Line30,对于新手来说,很像recursive,其实是async delegates
http://msdn.microsoft.com/en-us/library/fx6588te.aspx
- public static void ReadCallback(IAsyncResult ar) {
- String content = String.Empty;
-
- // Retrieve the state object and the handler socket
- // from the asynchronous state object.
- StateObject state = (StateObject) ar.AsyncState;
- Socket handler = state.workSocket;
- // Read data from the client socket.
- int bytesRead = handler.EndReceive(ar);
- if (bytesRead > 0) {
- // There might be more data, so store the data received so far.
- state.sb.Append(Encoding.ASCII.GetString(
- state.buffer,0,bytesRead));
- // Check for end-of-file tag. If it is not there, read
- // more data.
- content = state.sb.ToString();
- if (content.IndexOf("<EOF>") > -1) {
- // All the data has been read from the
- // client. Display it on the console.
- Console.WriteLine("Read {0} bytes from socket. \n Data : {1}",
- content.Length, content );
- // Echo the data back to the client.
- Send(handler, content);
- } else {
- // Not all data received. Get more.
- handler.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0,
- new AsyncCallback(ReadCallback), state);
- }
- }
- }
复制代码
|
|
|
|
|
|
|
|
|
|
|
发表于 30-3-2011 03:54 PM
|
显示全部楼层
|
=_= 基本上不会有人去用Recursive functions了... 书上学的大概是386的时代的做法吧? |
|
|
|
|
|
|
|
|
|
|
发表于 30-3-2011 04:20 PM
|
显示全部楼层
本帖最后由 chrizyuen2 于 30-3-2011 04:22 PM 编辑
=_= 基本上不会有人去用Recursive functions了... 书上学的大概是386的时代的做法吧?
megablue 发表于 30-3-2011 03:54 PM 
朋友....我没听错吧.
recursive loop 在电脑无法缺席.
最简单例子
ls -R, --recursive list subdirectories recursively |
|
|
|
|
|
|
|
|
|
|
发表于 30-3-2011 05:49 PM
|
显示全部楼层
朋友....我没听错吧.
recursive loop 在电脑无法缺席.
最简单例子
ls -R, --recursive ...
chrizyuen2 发表于 30-3-2011 04:20 PM 
个人意见...
大部分的recursive functions 都可以使用 iteration loop 来代替....而且运行效能肯定会比recursive functions好。
debug 起来也比较简单... |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 30-3-2011 06:27 PM
|
显示全部楼层
个人意见...
大部分的recursive functions 都可以使用 iteration loop 来代替....而且运行效能肯定会比 ...
megablue 发表于 30-3-2011 05:49 PM 
个人意见蛤... recursive 用于多层次计算, 会比 iteration loop 方便的多. 比如要找一个 tree 里的某一个 node 时...(以下献丑献丑... - Javascript)
function searchNode(root, node){
var childs = root.childNodes;
for (var c=0; c<childs.length; c++){
var _child = childs[c];
if (_child == node) return true;
if (searchNode(_child, node)) return true;
}
return false;
}
一般的话, iteration loop 会比较方便. |
|
|
|
|
|
|
|
|
|
|
发表于 4-7-2011 03:58 PM
|
显示全部楼层
|
你们都很厉害,小弟不知道什么是 recursive 还是looping...小弟只是想到logic,就可以写了,不管用什么方法,写出来的效果没问题就可以了。 |
|
|
|
|
|
|
|
|
|
|
发表于 4-7-2011 04:45 PM
|
显示全部楼层
回复 12# forexen
如果 IF & Case 都可以做到,你会用哪一个?如果 For, Foreach & While 都可以做到,你又会用哪一个? |
|
|
|
|
|
|
|
|
|
|
发表于 4-7-2011 05:35 PM
|
显示全部楼层
回复 13# hooi1983
我没有规定用什么方法写,IF & Case 都可以,如果当时想到IF 就用IF,想到CASE就用CASE,我知道多数人只用IF,有的人用CASE为了show off, 我只要写出来的结果是对的,就可以了。因为我的client 不会管我用什么方法写,只要对了就可以了。 |
|
|
|
|
|
|
|
|
|
|
发表于 4-7-2011 05:48 PM
|
显示全部楼层
回复 14# forexen
为何说用 Case 就是 show off?? |
|
|
|
|
|
|
|
|
|
|
发表于 4-7-2011 06:05 PM
|
显示全部楼层
回复 15# hooi1983
可能是小弟的心理作用吧,以前读书时,我写IF,老师给少分,写case的比较高分,还有program 写越短越多分。 |
|
|
|
|
|
|
|
|
|
|
发表于 4-7-2011 06:33 PM
|
显示全部楼层
回复 16# forexen
想了解你的程度而已。看到你的回复,算了。 |
|
|
|
|
|
|
|
|
|
|
发表于 8-7-2011 09:18 PM
|
显示全部楼层
|
Recursive 長期 looping 會 stack overflow 的. |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 17-8-2011 08:40 PM
|
显示全部楼层
Recursive 長期 looping 會 stack overflow 的.
馬拉棧 发表于 8-7-2011 09:18 PM 
没错.  |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 17-8-2011 08:44 PM
|
显示全部楼层
回复 hooi1983
可能是小弟的心理作用吧,以前读书时,我写IF,老师给少分,写case的比较高分,还 ...
forexen 发表于 4-7-2011 06:05 PM 
个人比较喜欢 if... else if... 至于 case... 不是很喜欢 
没有什么 show 不 show off 的, 只有逻辑可行及整齐就好.
老师会给 case 比较高分.. 应该是当时 case 刚刚教到吧? |
|
|
|
|
|
|
|
|
| |
本周最热论坛帖子
|