一般的に、私が聞きたいのは、
問題が命令型言語と関数型言語の両方の方法で解決できる場合、関数型言語は命令型言語と比較して、少なくともメモリを節約せずにメモリを浪費します。なぜなら、関数言語は再帰に大きく応答し、再帰は多くのメモリをプッシュするからですスタック?
上記の質問に従って、メモリ最適化の観点から、ジョブが命令型言語で実行できる場合、関数型言語を使用するべきではありません (少なくともそれよりも悪くないでしょう) ?
上記の質問は、実際にはアルゴリズムの質問から来ています。
追加のスペースを使用せずにスタックを予約します。
void insert_at_bottom(node **stack, int data)
{
if( isempty(*stack) ){
push(stack,data);
return;
}
int temp=pop(stack);
insert_at_bottom(stack,data);
push(stack,temp);
}
void rev_stack(node **stack)
{
if( isempty(*stack) ) return;
int temp = pop(stack);
rev_stack(stack);
insert_at_bottom(stack,temp);
}
上記の質問は、二重再帰を使用することで解決できます。私の意見では、コードで追加メモリを使用していなくても、スタック内の追加スペースを実際に「隠します」。
もちろん、私の質問はより一般的に言えば、上記の特定の質問に集中する必要はありません。
丁寧なアドバイスありがとうございます!