• 締切済み

再起処理の展開

http://momonga.t.u-tokyo.ac.jp/~ooura/fftman/に載っている、http://momonga.t.u-tokyo.ac.jp/~ooura/fftman/ftmn1_23.html#sec1_2_3の「リスト1.2.3-2. 任意の長さの FFT」プログラムですが、途中で再帰処理をしているところを なくして、forで記述したいのですが、どのようにすればいいのでしょうか??将来的にjavaでも動かしたいので「&tmpr[r], &tmpi[r]」というポインタを使わない形式にしたいんです。  ソースを貼り付けると文字列オーバーになるので文章のみにさせていただきます。

みんなの回答

  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.1

何故、再帰処理を避けたいのかわかりませんが (Javaでも再帰可能) そうしたくないならmallocなりC++ならvectorで動的に変数を 確保しておく(積み上げる)必要があります。 全体をwhile文で囲んで 自分で再帰しているのと同じように変数を積み上げていくわけです。 とりあえずC++のvectorを使ってはどうですか。 javaにもvectorはありますし。 http://www.kumei.ne.jp/c_lang/cpp/cpp_64.htm ※ちなみにこのプログラムを再帰しないように書くと かなり、見にくいコードになる気がします。 >「&tmpr[r], &tmpi[r]」 javaに関しては配列は参照渡しになるので あまりスマートなやり方ではないですが tmpr[r]である部分を一端0から始まる配列tmpr2にコピーし tmpr2を渡す事で解決できるはずです。 その辺はjavaの方で質問すればもっと良い方法が あるかもしれません。

関連するQ&A