1/编写一个递归函数test判断字符串是否为回文,如是返回true,如不是返回false。函数应忽略空字符。
bool test(char *s,int from,int to)
{
if(to<=from)
return ture;
else
{
if(s[from++]!=s[to--])
return false;
else
return test(s,from,to);
}
}
2、 一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30个是多少
int fibonacci(int n)
{
return n<=2?1:f(n-1)+f(n-2);
}
3、一列数的规则如下: 1、12、123、1234、12345、123456......,求第n个数的递归算法(n<=9)
int getNumber(int n)
{
return n<=1?1:f(n-1)*10+n;
}
4、将一整数逆序,如987654321变为123456789
5,递归方式合并两个链表
Node * MergeRecurse(Node *head1,Node *head2)
{
if(head1==NULL)
return head2;
if(head2==NULL)
return head1;
if(head1->data<head2->data)
{
Node *head=head1;
head->next=MergeRecurse(head1->next,head2);
}
else
{
Node *head=head2;
head->next=MergeRecurse(head1,head2->next);
}
return head;
}
6.递归方式把单链表逆序
Linklist reverse(linklist p)
{
if(p==NULL||p->next==NULL)
return p;
q=p->next;
Linklist h=reverse(q);
q->next=p;
p->next=NULL;
}