消除递归就是用循环替代递归delete的意思是释放指针的空间(当然先析构), 你给他的n不是指针当然不行
int f(int n){ int rst = 1; if(n==0||n==1) return 1; while(n != 1) { rst *= n; n /= 2; } return rst;}