O enésimo item da sequência de Fibonacci do algoritmo recursivo Java

A sequência de Fibonacci, também conhecida como sequência da proporção áurea, foi proposta pelo matemático italiano Leonardo Fibonacci. A sequência de Fibonacci refere-se a tal sequência: 1, 1, 2, 3, 5, 8, 13, 21, 34, ..., esta sequência começa a partir do 3º termo, e cada termo é igual às duas somas anteriores. Matematicamente, as maneiras pelas quais a sequência de Fibonacci pode ser recursiva são definidas da seguinte forma:

F (1)=1,F (2)=1,  F (n)= F (n – 1)+ F (n – 2)(n  ≥ 3,n  ∈ N*)

1. A condição de terminação recursiva da seqüência de Fibonacci é
obviamente fácil de ver.Observando a definição da seqüência de Fibonacci, podemos facilmente descobrir que quando n=1 ou n=2, é a condição de terminação recursiva da seqüência de Fibonacci. Neste momento, o valor específico da sequência de Fibonacci pode ser fornecido.

2. O método de processamento quando a sequência de Fibonacci termina recursivamente é o
mesmo, com base na definição recursiva da sequência de Fibonacci, quando a sequência de Fibonacci atinge a condição de terminação n=1 ou n=2, também podemos encontrar facilmente que Correspondente a  F (1)=1, F (2)=1, este é o valor correspondente da sequência de Fibonacci quando a recursão termina.

3. Extração lógica de repetição recursiva
da sequência de Fibonacci De acordo com a definição matemática da sequência de Fibonacci, F (n)= F (n – 1)+ F (n – 2) ( n  ≥ 3, n  ∈ N*) , ou seja, quando  n  ≥ 3, o valor deste item na sequência de Fibonacci é igual à soma dos valores dos dois itens anteriores, de modo que a resolução de uma sequência de Fibonacci relativamente grande pode ser transformada na resolução de uma sequência de Fibonacci com um valor menor .O valor da sequência Bonacci, há lógica repetida nela que pode ser reutilizada recursivamente.

código mostrar como abaixo:

import java.util.Scanner;

public class Test24 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请斐波那契数列的项数:");
        int num=scanner.nextInt();
        int s=func(num);
        System.out.println("斐波那契数列的第"+num+"项为"+s);
    }

    private static int func(int num) {
        if(num==1||num==2){
            return 1;
        }else{
            return func(num-1)+func(num-2);
        }
    }
}

Alcançando o resultado:

 

Acho que você gosta

Origin blog.csdn.net/m0_62218217/article/details/121585426
Recomendado
Clasificación