Từ 1 tới 3 trên tổng số 3 kết quả

Đề tài: [help][ đệ quy ] tìm giá trị nhỏ nhất trên mảng 1 chiều

  1. #1
    Ngày gia nhập
    03 2017
    Bài viết
    12

    Mặc định [help][ đệ quy ] tìm giá trị nhỏ nhất trên mảng 1 chiều

    Chào mọi người, bác nào chỉnh sửa bài này giúp e với, khi mảng có phần tử a[0] là số lẻ =>kết quả mặc định ra -1
    Tìm min chẵn trên mảng 1 chiều
    Code:
    int timMinChan(int a[], int n)
    {
    	if (n == 1)
    		return a[0] % 2 == 0 ? a[0] : -1; // kết quả sai khi a[0] là số lẻ
    	if (a[n - 1] % 2 == 0)
    		return timMinChan(a, n - 1) < a[n - 1] ? timMinChan(a, n - 1) : a[n - 1];
    	return timMinChan(a, n - 1);
    }
    Đã được chỉnh sửa lần cuối bởi congdongc041 : 28-12-2017 lúc 08:49 PM.

  2. #2
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất nhiều sóng gió
    Bài viết
    495

    Bạn chữa số -1 thành 10 hay 100 gì đó thì sẽ đúng hơn đấy. Không đúng hẳn, nhưng đúng hơn.

    - - - Nội dung đã được cập nhật ngày 29-12-2017 lúc 09:57 AM - - -

    C Code:
    1. #include <stdio.h>
    2. #include <limits.h>
    3.  
    4. int min(int x, int y)
    5. {
    6.     return x < y ? x:y;
    7. }
    8.  
    9. int minChan(int a[], int n)
    10. {
    11.     for(int i=0; i<n; i++)
    12.         printf("%d ", a[i]);
    13.     printf("\n");
    14.     if (n == 1)
    15.         return a[0] % 2 == 0 ? a[0] : INT_MAX;
    16.     if (a[n - 1] % 2 == 0)
    17.         return min( minChan(a, n - 1), a[n - 1] );
    18.     return minChan(a, n - 1);
    19. }
    20.  
    21. int main()
    22. {
    23.     int n;
    24.     scanf("%d", &n);
    25.     int a[n];
    26.     for(int i=0; i<n; i++)
    27.         scanf("%d", &a[i]);
    28.     int m = minChan(a, n);
    29.     printf("%d\n", m);
    30. }

    Input:
    Code:
    10
    5 -314  314 65 10 -128 20 365 -365   0
    Output:
    Code:
    h:\bin\Debug>testc < mang.txt
    5 -314 314 65 10 -128 20 365 -365 0
    5 -314 314 65 10 -128 20 365 -365
    5 -314 314 65 10 -128 20 365
    5 -314 314 65 10 -128 20
    5 -314 314 65 10 -128
    5 -314 314 65 10
    5 -314 314 65
    5 -314 314
    5 -314
    5
    -314
    Đã được chỉnh sửa lần cuối bởi Ada : 29-12-2017 lúc 10:10 AM.
    -...- -.- .. .-.. .-.. - .... . -... . .- ... - .-.-.

  3. #3
    Ngày gia nhập
    03 2017
    Bài viết
    12

    Trích dẫn Nguyên bản được gửi bởi Ada Xem bài viết
    Bạn chữa số -1 thành 10 hay 100 gì đó thì sẽ đúng hơn đấy. Không đúng hẳn, nhưng đúng hơn.

    - - - Nội dung đã được cập nhật ngày 29-12-2017 lúc 09:57 AM - - -

    C Code:
    1. #include <stdio.h>
    2. #include <limits.h>
    3.  
    4. int min(int x, int y)
    5. {
    6.     return x < y ? x:y;
    7. }
    8.  
    9. int minChan(int a[], int n)
    10. {
    11.     for(int i=0; i<n; i++)
    12.         printf("%d ", a[i]);
    13.     printf("\n");
    14.     if (n == 1)
    15.         return a[0] % 2 == 0 ? a[0] : INT_MAX;
    16.     if (a[n - 1] % 2 == 0)
    17.         return min( minChan(a, n - 1), a[n - 1] );
    18.     return minChan(a, n - 1);
    19. }
    20.  
    21. int main()
    22. {
    23.     int n;
    24.     scanf("%d", &n);
    25.     int a[n];
    26.     for(int i=0; i<n; i++)
    27.         scanf("%d", &a[i]);
    28.     int m = minChan(a, n);
    29.     printf("%d\n", m);
    30. }

    Input:
    Code:
    10
    5 -314  314 65 10 -128 20 365 -365   0
    Output:
    Code:
    h:\bin\Debug>testc < mang.txt
    5 -314 314 65 10 -128 20 365 -365 0
    5 -314 314 65 10 -128 20 365 -365
    5 -314 314 65 10 -128 20 365
    5 -314 314 65 10 -128 20
    5 -314 314 65 10 -128
    5 -314 314 65 10
    5 -314 314 65
    5 -314 314
    5 -314
    5
    -314
    thanks so much

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn