数据结构第一节课
递归要费大力气,老师强调了对计算机经典书籍的阅读要尽可能的读英文版,便于理解,同时筛除翻译不好造成的时间成本。(英语要好也太难了。。。。。)
强调要准备两本英语字典: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);
   }
}
}