Hello,大家好!我是程序员阿飞!这两天由于家里网线让豆豆(金毛)咬断了,所以没能按时更新学习内容。今天周末不上班,所以找来了维修师傅,将网线接好了。因此,今天将前两天未及时更新的内容补上。好了,废话不多说了,下面我们进入正题。今天,我学习的内容是:递归算法。

    1、递归算法

    递归算法指的是:直接或者间接调用本身自己方法的算法。

    2、应用实例

    (1)对于字符串ABCDEFG,输出GFEDCBA,要求使用递归

        package com.now.coder;

        public class Demo01 {

            /**

             * @content 对于字符串ABCDEFG,输出GFEDCBA,要求使用递归

             * @since 2019-3-9

             * @author rain

             */

            public static void main(String[] args) {

                String str = "ABCDEFG";

                System.out.println(str);

                help(0,str);

            }

            public static void help(int index,String str){

                if(index>=str.length()){

                    return;

                }else{

                    help(index+1,str);

                }

                //charAt()方法用于返回指定索引处的字符

                System.out.print(str.charAt(index));

            }

        }

    (2)一列数的规则如下: 1、1、2、3、5、8、13、21、34 ,求第30位数是多少?使用递归实现

        public class FibonacciSequence {

            public static void main(String[] args){

                System.out.println(Fribonacci(9));

              }

            public static int Fribonacci(int n){

                if(n<=2)

                    return 1;

                else

                    return Fribonacci(n-1)+Fribonacci(n-2);

            }

        }

    3、递归算法的优缺点

    (1)优点:代码更简洁清晰,可读性更好。

    (2)缺点:空间消耗大,系统可能撑不住。