我的递归基础练习(未完)
1.首先是阶乘的递归算法:
#include <stdlib.h>
int recursion(int i)
{
int sum;
if(i==0)//递归的终止条件
{
sum=1;
}
else
{
sum=recursion(i-1)*i;//开始递归调用
}
return sum;
}
int main(int argc,char argv[])
{
int i;
for(i=5;i>0;i--)
{
printf("%d的递归是%d \n",i,recursion(i));
}
}
int recursion(int i)
{
int sum;
if(i==0)//递归的终止条件
{
sum=1;
}
else
{
sum=recursion(i-1)*i;//开始递归调用
}
return sum;
}
int main(int argc,char argv[])
{
int i;
for(i=5;i>0;i--)
{
printf("%d的递归是%d \n",i,recursion(i));
}
}
代码解释就不说了。
递归函数的调用,和一般函数的调用是一样。当程序调用一个函数时,先将当前的运行状态保留以便程序运行玩函数调用后,能够恢复到原来的状态继续运行。
2.递归的链表创建和输出
#include <stdlib.h>
struct list
{
int data;
struct list *next;
};
typedef struct list node;
typedef node *link;
//递归链表输出函数
void print_list(link ptr)
{
if(ptr !=NULL)
{
printf("[%d]",ptr->data);
print_list(ptr->next);//递归链表输出函数调用
}
}
//递归链表创建函数
link create_list(int *array,int len,int pos)
{
link head;//链表结点的指针
if(pos==len)
{
return NULL; //终止条件
}
else
{
//创建结点内存
head=(link)malloc(sizeof(node));
if(!head)
{
return NULL;
}
head->data=array[pos];
head->next=create_list(array,len,pos+1);
return head;
}
}
int main(int argc,char *arv[])
{
int list[6]={1,2,3,4,5,6};
link head;
head=create_list(list,6,0);
if(!head)
{
printf("内存分配失败! \n");
exit(1);
}
printf("链表的内容:\n");
print_list(head);
printf("\n");
}
struct list
{
int data;
struct list *next;
};
typedef struct list node;
typedef node *link;
//递归链表输出函数
void print_list(link ptr)
{
if(ptr !=NULL)
{
printf("[%d]",ptr->data);
print_list(ptr->next);//递归链表输出函数调用
}
}
//递归链表创建函数
link create_list(int *array,int len,int pos)
{
link head;//链表结点的指针
if(pos==len)
{
return NULL; //终止条件
}
else
{
//创建结点内存
head=(link)malloc(sizeof(node));
if(!head)
{
return NULL;
}
head->data=array[pos];
head->next=create_list(array,len,pos+1);
return head;
}
}
int main(int argc,char *arv[])
{
int list[6]={1,2,3,4,5,6};
link head;
head=create_list(list,6,0);
if(!head)
{
printf("内存分配失败! \n");
exit(1);
}
printf("链表的内容:\n");
print_list(head);
printf("\n");
}
知道如何修改上述代码,逆向输出链表吗?
3.你充10元,你的上级得到5元,你的上上级得到3元,你的上上上级得到1元
合乎自然而生生不息。。。


浙公网安备 33010602011771号