问题 单项选择题

一般情况下,将递归程序转化成为非递归程序应该设置 (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--;

}

}

不定项选择
单项选择题