簡體   English   中英

用Java遞歸定義一個序列

[英]Define a sequence recursively in Java

在這個問題上需要幫助,我在遞歸方面很不好。 我需要編寫一個執行此操作的方法:

輸入變量X是1到50之間的整數。該函數應以Y形式返回由以下項遞歸定義的序列的第X個項:

f(1) = 1 f(2) = 3 f(X) = 2*f(X-1) – 2*f(X-2) for X = 3,4,5,...

您的函數代碼應使用遞歸(而不是循環)

TBH我什至不知道從哪里開始。 任何幫助,將不勝感激。 這是我當前的代碼:

package p1parta;

import java.util.Scanner;

public class RecursiveSeq
{
    public static void main(String args[])
    {
       System.out.println("Please enter a number:");
       Scanner input = new Scanner(System.in);

       int x = input.nextInt();

       System.out.println(sequence(x));
    }

    public static int sequence(int x)
    {
        if(x == 1){
           return 1;
        }
        if (x == 2){
           return 3;
        }
        return 2 * sequence(x - 1) - 2 * sequence(x - 2);
    }
}

我嘗試實現所示的解決方案,但是從程序中獲得的輸出與我手工計算的結果不匹配。 實際上,僅測試輸入3、4、5和6,唯一匹配的輸入是5

您的問題是一個完美的遞歸用例。 通常,遞歸模式為:

func(context)
    if simple case
        return simple answer
    else
        call func(simpler context)
        and return combined results

嘗試使用此模式實施,如果有問題請回來。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM