数据结构第一节课
递归要费大力气,老师强调了对计算机经典书籍的阅读要尽可能的读英文版,便于理解,同时筛除翻译不好造成的时间成本。(英语要好也太难了。。。。。)
强调要准备两本英语字典:1.计算机字典 2.科技字典 ps:字典要用最新版(计算机科学发展过快)
要包含不同方向的词汇
要有名词解释文字说明
留了两个递归问题让我们尝试:
1.n个整数调出最小的整数(递归实现)
int findmin(int a[],int n)
{
int m;
if(n<=1)
return a[0];
else{
m=findmin(a,n-1);
return a[n-1]<m?a[n-1]:m;
}
}递归:n->n-1->.....->1;
2.n个整数全排列;
全排列就是从第一个数字起每个数分别与它后面的数字交换。
伪代码:
allArrange(str,k,m)
{
if k==m print;
for i=k to m{
swap(str,k,i);
allArrange(str,k+1,m);
swap(str,k,i);}
}
#include<stdio.h>
#include<string.h>
void swap(char*a,char*b)
{
char temp;
temp=*a;
*a=*b;
*b=temp;
}
void Allarrange(char *str,int k,int len)
{
int i;
if(k==len)
{
static int s_i=1;
printf("第%d种排列为:\t%s\n",s_i++,str);
}
else
{
for(i=k;i<=len;i++)
{
swap(str+i,str+k);
Allarrange(str,k+1,len);
swap(str+i,str+k);
}
}
}
京公网安备 11010502036488号