ページ 11

ループネストの簡略化

Posted: 2015年12月25日(金) 22:28
by ウーパールーパー
ループのネスト構造を簡略化する方法が分からなかったためトピックを立てさせていただきました。
例えば、

コード:

int i, j, k;
for( i=0 ; i<100 ; i++ )
{
    for( j=i ; j<100 ; j++ )
    {
        for( k=l ; k<100 ; k++ )
        {
            printf( "%d\n", i*j*k );
        }
    }
}
といったループがあったとします。
上の例ですと3重程度ですから直接書いても大した問題ではありませんが、
さらに重なると書くのも大変ですし、ミスも増えてきます。
上記のようなプログラムを簡単に表記する方法はないでしょうか?

Re: ループネストの簡略化

Posted: 2015年12月25日(金) 23:06
by たいちう
> 上の例ですと3重程度ですから直接書いても大した問題ではありませんが、
> さらに重なると書くのも大変ですし、ミスも増えてきます。

この程度ならば十分簡潔だと思います。
さらに重なる場合、例えば10段階にネストするような場合でも、
下手な小細工をするよりも簡潔だとは思いますが、
そもそも処理的にどうなのよと思い、アルゴリズムを見直します。

どうしても多重の深いネストが必要な場合は再帰関数を使うでしょう。
実際に何をやりたいのか具体的でないと、これ以上のアドバイスは難しいです。