关于递归调用的理解问题
题目:逆序输出单链表的数据域,要求 指针l指向链表首元结点,且只用l一个指针
(一)分析:在单链表的情况下,要逆序输出结点数据只用一个指针,除了用递归调用,好象没有别的方法了。关键在于,如何设计递归调用?
递归调用属于分治法的一种思想,一个包含直接或者间接调用自身函数的语句的函数被称为递归函数,但不是所有的调用自身都是递归,必须满足以下条件:
(1)在每一次调用自身时,必须是(在某种意义上)更接近于解;
(2)必须有一个终止 处理或者计算 的准则;
设计的算法如下:
————————————————————————————————————
void reversePrint(LNode *l) //逆序输出链表
{
if (l->next!= NULL){
reversePrint(l->next);
}
cout << l->data<<" -- ";
}
——————————
前几天做题的时候,发现《数据结构高分笔记》第一章有这样一个思考题,对理解递归调用帮助很大,题目如下:
题目:逆序输出单链表的数据域,要求 指针l指向链表首元结点,且只用l一个指针
(一)分析:在单链表的情况下,要逆序输出结点数据只用一个指针,除了用递归调用,好象没有别的方法了。关键在于,如何设计递归调用?
递归调用属于分治法的一种思想,一个包含直接或者间接调用自身函数的语句的函数被称为递归函数,但不是所有的调用自身都是递归,必须满足以下条件:
(1)在每一次调用自身时,必须是(在某种意义上)更接近于解;
(2)必须有一个终止 处理或者计算 的准则;
设计的算法如下:
————————————————————————————————————
void reversePrint(LNode *l) //逆序输出链表
{
if (l->next!= NULL){
reversePrint(l->next);
}
cout << l->data<<" -- ";
}
——————————