再帰関数

以前、『階層メッシュアニメーション』や『スキンメッシュアニメーション』の読み込みでは
再帰関数を使うと言いました。
入れ子構造になっているデータは入れ子構造の読み出しプログラムで読み込むのが最適です。
その入れ子構造を関数で作る場合に便利なのが再帰関数です。

再帰関数というのは関数が自分自身を呼び出す物です。
しかし、どんな関数でも良い訳ではありません。
必ず、元の場所に戻れるような仕組みになっていなければ、無限に自分自身を呼び出し続け、
スタックオーバーフローのエラーになってしまいます。

 

駄目な例

#include <stdio.h>

void recursive()
{
 recursive();
}

void main()
{
 recursive();
 getchar();
}

 

良い例

#include <stdio.h>

int stack=0;

void recursive()
{
 stack++;
 printf("再帰を掘り下げます。 %d 階層目\n",stack);
 if(stack>=10){
  return;
 }
 recursive();
 stack--;
 printf("再帰を戻っています。 %d 階層目\n",stack);
}

void main()
{
 recursive();
 getchar();
}

この再帰関数をフレームの読み込みに使うとメッシュデータが階層構造を
持って作られます。

 

 

最終更新:2011年05月21日 20:37
添付ファイル