Hỏi Về Dùng Đệ Quy Trong Linked List

Jio Freed

New Member
11/4/18
4
2
3
22
Chào mọi người, em là newbie. Nay xin mạo muội hỏi các tiền bối
Em muốn hỏi đề như trong hình, em có một linked list có các node là các số nguyên, thực hiện tính tổng các số chẵn, lẽ hoặc tổng tất cả bằng đệ quy
Vì không có tham số nên em không biết dùng đệ quy làm sao ạ. Mong các tiền bối chỉ giáo


Đây là code khi em không dùng đệ quy:
PHP:
@Override
    public int CountOddNum() throw NoSuchElementException{
        if (head == null)
            throw new NoSuchElementException("List is empty!");
        else{
            Node tmp = head;
            int max = 0;
            int t = 0;
            while (tmp.getNext() != null){
                if (tmp.getData()%2 != 0){
                    max+ = tmp.getData();
                    t++
                }
                tmp = tmp.getNext();
            }
            if (t == 0)
                throw new NoSuchElementException("List doesn't have odd number");
            return max;
        }
    }
 
Sửa lần cuối:

D.A.N_3002

Active Member
14/11/17
177
49
28
17
Đã chỉnh sửa :)
Cảm ơn bạn, nhưng mình chỉ copy 1 đoạn code nhỏ nên thiết nghĩ cũng ko cần phải up hết lên
Vấn đề này cũng không khó lắm, để mk làm 1 Vd về tính tổng nhé :) Ở đây mk dùng ArrayList cho nhanh nhé :)
PHP:
import java.util.ArrayList;

public class Suppose_Sum
{
    public static ArrayList<Integer> arr;
   
    public static Integer Sum(int in, int location)
    {
        if(location == arr.size())
        {
            return in;
        }
        else
        {
            in += arr.get(location);
            return Sum(in, location + 1);
        }
    }
   
    public static void main(String[] args)
    {
        // Thêm phần tử
        arr = new ArrayList<>();
        for(int i = 0; i <= 10; i++)
        {
            arr.add(i);
        }
       
        System.out.println(Sum(0, 0));
    }
   
}
Đây là Output :
 

Jio Freed

New Member
11/4/18
4
2
3
22
Vấn đề này cũng không khó lắm, để mk làm 1 Vd về tính tổng nhé :) Ở đây mk dùng ArrayList cho nhanh nhé :)
PHP:
import java.util.ArrayList;

public class Suppose_Sum
{
    public static ArrayList<Integer> arr;
  
    public static Integer Sum(int in, int location)
    {
        if(location == arr.size())
        {
            return in;
        }
        else
        {
            in += arr.get(location);
            return Sum(in, location + 1);
        }
    }
  
    public static void main(String[] args)
    {
        // Thêm phần tử
        arr = new ArrayList<>();
        for(int i = 0; i <= 10; i++)
        {
            arr.add(i);
        }
      
        System.out.println(Sum(0, 0));
    }
  
}
Đây là Output :
Cảm ơn bác nhưng theo trong hình đề yêu cầu dùng Linked List
 

Jio Freed

New Member
11/4/18
4
2
3
22
Vấn đề này cũng không khó lắm, để mk làm 1 Vd về tính tổng nhé :) Ở đây mk dùng ArrayList cho nhanh nhé :)
PHP:
import java.util.ArrayList;

public class Suppose_Sum
{
    public static ArrayList<Integer> arr;
  
    public static Integer Sum(int in, int location)
    {
        if(location == arr.size())
        {
            return in;
        }
        else
        {
            in += arr.get(location);
            return Sum(in, location + 1);
        }
    }
  
    public static void main(String[] args)
    {
        // Thêm phần tử
        arr = new ArrayList<>();
        for(int i = 0; i <= 10; i++)
        {
            arr.add(i);
        }
      
        System.out.println(Sum(0, 0));
    }
  
}
Đây là Output :
Code của bác mình chưa hiểu lắm, hàm sum bác cho tham số đầu vào là gì thế? in với location là gì vậy?
 
  • Like
Reactions: D.A.N_3002

D.A.N_3002

Active Member
14/11/17
177
49
28
17
Code của bác mình chưa hiểu lắm, hàm sum bác cho tham số đầu vào là gì thế? in với location là gì vậy?
"in" là số hạng thứ nhất
"location" là vị trí của số hạng thứ 2 trong ArrayList và cũng là điều kiện để dừng Đệ Quy