递归

递归的思想就是:把问题分解成为规模更小的、具有与原问题有着相同解法的问题。

递归使用的条件:

  • 可以通过递归调用来缩小问题规模,且新问题与原问题有着相同的形式。
  • 存在一种简单情境,可以使递归在简单情境下退出。

 

在编写递归调用的函数的时候,一定要把对简单情境的判断写在最前面,以保证函数调用在检查到简单情境的时候能够及时地中止递归,否则,你的函数可能会永不停息的在那里递归调用了。

 

简单的自己调用自己

int jiecheng(n)                                           

{

     if(n==1)

             return 1;

    else 

          return n * jiecheng(n-1);//后者返回的是一个函数值相当于f(n-1)

}

以上相当于  f(n)=n*f(n-1)  \\原先的规模为n  通过分解令规模为1  此时方便求解 再令规模为2 直至 n

                f(n-1)=(n-1) * f(n-2)

          直到 f(2)= 2 * f(1)  其中f(1)已知  故可推回f(2 ) f(3)  知道f(n)

 

 

字符串回文递归判断

 

如何减小规模:我们发现 回文字符串 去掉两端依旧回文

方法   :先判断给定字符串的首尾字符是否相等,若相等,则判断去掉首尾字符后的字符串是否为回文,若不相等,则该字符串不是回文。

           不断减小规模 由n个字符 减少到1或两个字符

return ((str[0] == str[n-1]) ? is_palindereme(str+1, n-2) : 0); 

 

 

 

 

 
posted on 2016-10-29 20:22  qq77530202  阅读(105)  评论(0编辑  收藏  举报