【问题标题】:converting to a recursive method转换为递归方法
【发布时间】:2016-02-13 03:18:33
【问题描述】:

我是递归的新手,有人可以启发我。

问题是:

求 #101 学生的测验平均成绩。"

我已经使用迭代解决了它,但我不知道如何将它转换为递归。

import java.io.*; 
import java.util.*;

public class Test{
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        Scanner sc = new Scanner(System.in);

        String arr[][] = {{"101","Quiz","90"},{"101","CS","80"},{"102","Quiz","85"},{"101","Quiz","75"},{"103","CS","84"},{"101","Quiz","87"}};
        int sum = 0;
        int ave = 0;
        System.out.println("Student #\tType\tGrade");
        for(int ctr = 0; ctr<arr.length; ctr++){
            System.out.println(arr[ctr][0]+"\t\t"+arr[ctr][1]+"\t"+arr[ctr][2]);

            if(arr[ctr][0] == "101"){
                if(arr[ctr][1] == "Quiz"){
                    sum += Integer.parseInt(arr[ctr][2]);
                    ave += 1;
                }
            }

        }
        System.out.println("The Average quiz of Student # 101 is: "+ sum/ave);


    }



}

【问题讨论】:

标签: java recursion multidimensional-array


【解决方案1】:

你可以做这样的事情,但我认为这不是优雅/实用/好的做法:

public int[] recursiveAverage(String array[][], int i){
    if (i < array.length)
    {
        int[] previousAverage = recursiveAverage(array, i + 1);
    }
    else
    {
        int[] previousAverage = {0, 0};
    }

    if (array[i][0] == "101" && array[i][1] == "Quiz")
    {
        previousAverage[0] = Integer.parseInt(array[i][2]);
        ++previousAverage[1];
    }

    return previousAverage;
}

然后您将previousAverage[0] 除以previousAverage[1] 以获得实际平均值。 这实际上是您的迭代函数,将for 循环替换为递归。

要有创意。

【讨论】:

    猜你喜欢
    • 2021-08-09
    • 2020-10-01
    • 1970-01-01
    • 2017-02-28
    • 2015-01-08
    • 2017-10-26
    • 2013-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多