总的来说,我想问,
如果一个问题可以通过命令式语言方式和函数式语言方式来解决,那么与命令式语言相比,函数式语言会浪费内存,至少不会节省内存,因为,函数式语言大量依赖递归,递归会推动大量内存堆栈?
然后是上面的问题,从内存优化的角度来看,如果一项工作可以用命令式语言完成,它不应该(至少不会比)使用函数式语言?
上面的问题,其实来自一个算法问题:
在不使用额外空间的情况下保留堆栈:
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);
}
上面的问题可以通过使用双递归来解决,在我看来,即使它没有在代码中使用额外的内存,它实际上“隐藏”了堆栈中的那些额外空间。
当然,我的问题更笼统,您不必专注于上述特定问题。
感谢您细心的建议!