cの問題の多くの異なる「レベル」で使用されるプロセスがあり、「慣用的な」方法が望ましい問題を処理する方法を知りたい.私はこれを十分に説明していないことを知っている.例を挙げる:
最良の次の動きを出力することになっているゲームソルバーを作成する一般的な問題を考えてみてください.for
ループ内のすべての可能な動きをチェックし、それが(このラウンドで)勝利の動きであるかどうかを確認する必要があると思います.それ以外の場合は、対戦相手があなたの動きに対してプレイできる可能性のあるすべての動きをチェックし (for ループ)、関数を呼び出して最適な動きを再度見つけます。
ただし、関数は呼び出し元と通信する方法を見つける必要があるため、このアプローチにはパフォーマンス (関数などを呼び出すために必要な定型コードの実行に時間がかかる) や柔軟性の制限など、いくつかの制限があることがわかりました。良い手が見つかりました。
bestmove()
{
for (;i<maxmove;i++)
{
if(checkifwinning(moves[i])) return;
for (;n<maxopponentmove;n++)
{
bestmove();
}
}
私はしばらくの間 haskell をいじっていたので、再帰的な解決策を探すことに頭を悩ませているのではないでしょうか。この関数を「C ネイティブ」な方法で書く方法を教えていただければ幸いです。