问题
单项选择题
一般情况下,将递归程序转化成为非递归程序应该设置 (1) ,但是消除 (2) 时不需要使用。
2()
A.直接递归
B.间接递归
C.尾递归
D.递推
答案
参考答案:C
解析:
将递归程序转化成为非递归程时,一般需要设置栈。但对于尾递归可将其转化成递推,不需要栈。尾递归调用就是作为方法的最后一个操作出现的递归的方法调用。例如:
打印数组A[n]值的递归算法:
void recfunc(int A[], int n){
if(n>=0){
cout<<A[n]<<"";
n--;|
recfunc(A, n);
}
}
可以改写为:
void iterfunc(int A[], int n){
//消除了尾递归的非递归函数
while(n>=0){
cout<<"value"<<A[n]<<endl;
n--;
}
}