投稿のタイトルが私の質問に対応していると思います。しかし、繰り返しになりますが、私は誰かがこの問題に対してより良いアプローチを持っているかどうか疑問に思っています。
/* Write a recursive program to compute lg( N! ) */
#include <iostream>
#include <cmath>
using namespace std;
long double log_base2( long double N ) {
return log( N )/log( 2.0 );
}
long double lg_n_factorial( long N ) {
if( 1 == N ) return log_base2( static_cast<long double>( N ) );
else return lg_n_factorial( N -1 ) + log_base2( static_cast<long double>( N ) );
}
int main( int argc, char *argv[] ) {
cout << ( lg_n_factorial( 10 ) ) << endl;
return 0;
}
人々の反応に基づいて、これは本の問題であり、本はそれを再帰的に行うように言っていることを明確にする必要があります。私はプログラミングの問題を練習していて、他の人からフィードバックを得ようとしているので、より良いプログラマーになるために取り組んでいるときに間違いを見つけることができます。