关于递归

来源:互联网 发布:数据铁笼文献 编辑:程序博客网 时间:2024/05/17 13:41

直接上例子1:

1(直接)、

int calculate(int m)  {      int count = 0;      if(m <0)          return -1;        for(int index = 0; index <= m; index++)          count += index;            return count;  }  

2(优化)、

int calculate(int m)  {      if(m == 0)          return 0;      else          return calculate(m -1) + m;  }  

例子2:

f(n)=f(n-1)+f(n-2) f(0)=0 f(1)=1 

1、

int func(int n){    int val;    if(n==1)        val = 0;    else if(n==2)        val = 1;    else        val = func(n-1)+func(n-2);    return val;}
2(优化)、

int func(int n){    int val;    if(n==1)        return 0;    else if(n==2)        return 1;        else            return func(n-1)+func(n-2);    }

例子3:

1、

int find(int array[], int length, int value)  {  <pre name="code" class="cpp">int _find(int index, int array[], int length, int value)  {      if(index == length)          return -1;        if(value == array[index])          return index;        return _find(index + 1,  array, length, value);  }  

2(递归查找)、
int _find(int index, int array[], int length, int value)  {      if(index == length)          return -1;        if(value == array[index])          return index;        return _find(index + 1,  array, length, value);  }    int find(int array[], int length, int value)  {      if(NULL == array || length == 0)          return -1;        return _find(0, array, length, value);  }  




0 0
原创粉丝点击