递归算法浅析

在很多的编程语言支持函数的自调用,在这些语言中函数可以通过调用自身来进行递归。递归算法的难点在于在编程中如何确定调用自身的表达式。下面通过应用高中数学的知识来说明如何确定调用自身的表达式
其实递归算法相当于高中数学所学的抽象函数。
定义一个函数f(x)(x=1,2,3,4,5,6,……..,n)为(1~x)自然数的和。如求1~10连续的10个自然数的和,f(9)表示为1~9连续自然数的和,那么1~10连续自然数的和
f(10)f(10)=f(9)+10。若求(1~x)自然数的和就是:
f(x)=f(x-1)+x;
确定出抽象函数的函数解析式来写程序表达式就比较容易,就是将该表达式用相应的程序语言写出就可以。
如以下的程序为求1~10连续自然数的和
(1)先得到抽象函数f(x)=f(x-1)+x的函数表达式。
(2)确定初值。此处为f(1)=1;
(3)应用程序写出函数表达式即为递归。强调内容

public class Sum{
    public static int add(int number){
        if(number==1){ //赋初值 
            return 1;
        }else{  
        //递归表达式就相当于是写抽象函数f(x)=f(x-1)+x;
            return add(number-1)+number;
        }

    }
        public static void main(String [ ]args){
            System.out.println(add(10));

        }
}

下看斐波那契数列
斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,4这个数列从第3项开始,每一项都等于前两项之项之和。
对斐波那契数列其函数关系为
F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)F(1)=1,F(2)=1

public class Recursion{
    public static int  fibonacci(int number){ 
        if(number==1||number==2){  //赋值初值;
            return 1;
        }else{
            //递归表达式就相当于是写抽象函数f(n)=f(n-1)+f(n-2); 
            return fibonacci(number-2)+fibonacci(number-1);
            }
    }
        public static void main(String [ ]args){
            System.out.println(fibonacci(10));  
                for(int i=1;i<=12;i++){
                    System.out.print(fibonacci(i)+"\t");
                }

        }
}
    原文作者:递归算法
    原文地址: https://blog.csdn.net/Burner_shadow/article/details/82708541
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞