HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
0201
ヒシン再帰に代わる処理方法について3解決


ヒシン

リンク

2010/2/1(Mon) 00:58:20|NO.30288

よろしくお願いします。

下記の講座(Cですが)を参考に落ちモノパズルを作っているところなんですが、
ttp://codezine.jp/article/detail/228
(一応hを抜いておきます)

「いくつ繋がっているかを調べる」の項目の【再帰処理】というのは、
HSPでは難しいというのを過去ログで見かけ、ここで足踏み状態になっています。

力技でも可能そうではあるんですが、
どうにも非効率的なスクリプトしか浮かんでこなかったもので・・・
「HSPならこうして実装する」という例を、どなたか ご教示願えませんでしょうか。



この記事に返信する


窓口

リンク

2010/2/1(Mon) 08:32:28|NO.30295

意味のないスクリプトですが、こんな感じでしょうか?
関数に送られた数字を10 になるまで加算します。


#module #defcfunc c int cp1_ if cp1_ < 10 { return c( cp1_ + 1 ) }else{ return cp1_ } #global mes c(2)



ANTARES

リンク

2010/2/1(Mon) 11:52:03|NO.30303

>【再帰処理】というのは、HSPでは難しいというのを過去ログで見かけ
 その人にとって再起処理が難しかっただけでしょう。
まあ、どれをローカル変数にすればいいかの判断が難しいと言えば
難しいかもしれませんが。

>力技でも可能そうではあるんですが、
 たぶん、すべての再起処理はループに還元できるはずですが、
再起呼び出しに適した処理をループで書く方が難しいです。

#include "hspext.as" #module #defcfunc count str p1, local dirs, local n sdim files,32000 dirlist files,p1+"\\*.*",1: n=stat sdim dirs,32000 dirlist dirs,p1+"\\*.*",5: ndir=stat if ndir>0 { sdim dir,260 repeat ndir notesel dirs noteget dir,cnt n+=count(p1+"\\"+dir) ;再帰呼び出し loop } return n #global sdim dir,260 selfolder dir,"指定フォルダ以下の総ファイル数を数えます": c=stat if c: end mes dir+"\nの下の総ファイル数は"+count(dir)+"です"



ヒシン

リンク

2010/2/2(Tue) 02:23:25|NO.30335

お二方、ご返答ありがとうございます。

なるほど・・・組み込み方にコツが要るだけで、
再帰処理自体が難しいわけではなかったんですね。
頂いた情報で吟味してみます。

ありがとうございました。



ONION software Copyright 1997-2023(c) All rights reserved.