평균을 계산하기 위해 배열에서 재귀를 사용하는 방법은 무엇입니까?

카슈 마피아

10 개 대학에 대한 다양한 정보를 배열 구조로 저장하는 프로그램이 있습니다. 대학 정보를 구조로 변환하여 배열에로드하는 'inputData'라는 함수가 있습니다. 나는 모든 대학의 수업료를 재귀 적으로 합산하고 평균을 반환하는 함수를 작성하려고합니다. 하지만 어딘가에서 오류가 계속 발생합니다.

다음은 구조입니다.


struct University
{
    char name[50];
    char city[20];
    char state[3];
    int rank;
    int tuition;
};

정보를 구조로 변환하는 함수입니다.

struct University inputData(char Name[50], char City[20], char State[3], int Rank, int Tuition){
    struct University uni;
    strcpy(uni.name, Name);
    strcpy(uni.city, City);
    strcpy(uni.state, State);
    uni.rank=Rank;
    uni.tuition=Tuition;
    return uni;
};

그런 다음 구조 배열을 만들고 모든 정보를 추가했습니다.

struct University university[10];
university[0]= inputData("Princeton University", "Princeton", "NJ", 1, 45320);
university[1]= inputData("University of Virginia", "Charlottesville", "VA", 24, 52040);
university[2]= inputData("Boston College", "Chestnut Hill", "MA", 31, 51296);
university[3]= inputData("Georgia Institute of Technology", "Atlanta", "GA", 34, 32404);
university[4]= inputData("Lehigh University", "Bethlehem", "PA", 44, 48320);
university[5]= inputData("University of Chicago", "Chicago", "IL", 3, 52491);
university[6]= inputData("Duke University", "Durham", "NC", 8, 51265);
university[7]= inputData("University of Georgia", "Athens", "GA", 56, 29844);
university[8]= inputData("University of Denver", "Denver", "CO", 86, 46362);
university[9]= inputData("Loyola University Chicago", "Chicago", "IL", 99, 26270);

평균 수업료를 계산하는 기능은 다음과 같습니다 (배열과 길이를 전달합니다).

int recursionAvg(struct University* list, int length){
    if (length<=0){
    return 0;
}
    if(length!=0) return (recursionAvg(list, length -1) + list[length - 1].tuition)/10; 
};

나는 그것을 호출하고 다음을 수행하여 결과를 인쇄합니다.

average = recursionAvg(university, 10);
printf("the average is: %d", average);

나는 답으로 43561을 받아야하는데 3126을 계속 얻습니다. 문제의 일부는 모든 재귀 호출에서 계속 10으로 나누기 때문이라는 것을 알고 있습니다.하지만 함수 자체 내에서 이것을 한 번만 수행하는 방법은 무엇입니까?

코드가 실행되지만 잘못된 결과가 나타납니다.

pjs

증분 평균을 사용하여 재귀 적 구현을 ​​수행 할 수 있습니다 . int / int 반올림 문제를 피하기 위해 doubles로 수행하는 것이 좋습니다.

double avg_tuition(struct University* list, int n) {
    if (length <= 0) {
        return 0.0;
    }
    double running_avg = avg_tuition(list, n - 1);
    return running_avg + (list[n - 1].tuition - running_avg) / n;
}

그런 다음 결과를 int로 캐스트하거나 반올림 할 수 있습니다.

정수 산술 사용을 고집하는 경우 :

int avg_tuition(struct University* list, int n) {
    if (length <= 0) {
        return 0;
    }
    int running_avg = avg_tuition(list, n - 1);
    return running_avg + (list[n - 1].tuition - running_avg) / n;
}

그러나 이것은 정수 절단의 누적 효과로 인해 부정확 한 결과를 제공합니다. 좋은 소식은 원래 데이터가 int유형에 맞을 때 오버플로가 발생하지 않는다는 것입니다 . 왜냐하면 큰 합계 (잠재적 오버플로가 발생하는 위치)를 누적하는 대신 실행 평균과 각각의 새로운 관측치 간의 차이로 작동하기 때문입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

NumPy 배열을 분할하기 위해`numpy.digitize`를 사용한 후 각 bin의 평균을 계산하는 방법은 무엇입니까?

분류에서Dev

C ++에서 배열의 평균을 얻기 위해 포인터를 사용하는 방법은 무엇입니까?

분류에서Dev

재귀를 사용하여 Java에서 하위 문자열의 발생을 계산하는 방법은 무엇입니까?

분류에서Dev

Pandas를 사용하여 GroupBy 객체에서 롤링 평균을 계산하는 방법은 무엇입니까?

분류에서Dev

클래스 개체에 대해 get 메서드를 사용하여 평균을 계산하는 방법은 무엇입니까?

분류에서Dev

정수 배열에 저장된 값을 반전시키기 위해 Java에서 재귀 메서드를 작성하는 방법은 무엇입니까?

분류에서Dev

기간 계산에 사용되는 날짜를 인쇄하기 위해 함수에서 새 열을 만드는 방법은 무엇입니까?

분류에서Dev

R에서 기본 값 (평균, SD, SE 등)을 계산하기 위해 데이터 프레임을 다시 포맷하는 방법은 무엇입니까?

분류에서Dev

R에서 평균 함수를 사용하지 않고 평균을 계산하는 방법은 무엇입니까?

분류에서Dev

범위 10으로 배열의 평균을 계산하는 방법은 무엇입니까?

분류에서Dev

postgres를 사용하여 다른 레코드 매핑을 위해 재귀 모드에서 하위 범주 ID를 얻는 방법은 무엇입니까?

분류에서Dev

메모리 할당 오류를 피하기 위해 거대한 numpy 배열에서 계산을 처리하는 방법은 무엇입니까?

분류에서Dev

try do 함수를 위해 JavaScript에서 재귀를 사용하는 방법은 무엇입니까?

분류에서Dev

R의 평균을 계산하기 위해 NaN, Na 및 Inf를 처리하는 방법은 무엇입니까? + 커뮤니티 탐지 지표 측정 후

분류에서Dev

laravel에서 특정 날짜의 근무 시간을 계산하기 위해 eloquent를 사용하는 방법은 무엇입니까?

분류에서Dev

절대 값을 계산하기 위해 문자열에 주어진 숫자를 사용하는 방법은 무엇입니까?

분류에서Dev

배열 스택의 평균을 계산하는 방법은 무엇입니까?

분류에서Dev

앱을 평가하기 위해 사용자를 Google Play에 보내는 방법은 무엇입니까?

분류에서Dev

np.average를 사용하여 np.nan을 포함하면서 평균을 계산하는 방법은 무엇입니까? (groupby 사용 중)

분류에서Dev

Python의 다른 열에 의해 결정된 개별 연속 범위에서 평균 수익을 계산하는 방법은 무엇입니까?

분류에서Dev

탄력적 검색 집계를 위해 각 단계에서 평균 일수를 계산하는 방법은 무엇입니까?

분류에서Dev

두 개체를 병합하고 Javascript에서 해당 값의 평균을 계산하는 방법은 무엇입니까?

분류에서Dev

null 값을 포함하는 키-값 쌍을 제거하기 위해 다차원 배열에서 array_filter () 함수를 재귀 적으로 사용하는 방법은 무엇입니까?

분류에서Dev

배열에서 평균을 계산하는 더 효율적인 방법은 무엇입니까?

분류에서Dev

몽구스에서 평균을 계산하는 방법은 무엇입니까?

분류에서Dev

Android에서 평균 기능을 사용하는 방법은 무엇입니까?

분류에서Dev

조건에서 값을 더하기 위해 배열 수식을 사용하는 방법은 무엇입니까?

분류에서Dev

반응을 사용하여 확산 연산자를 사용하여 객체 배열에서 객체를 삭제하기 위해 확산 연산자를 사용하는 방법은 무엇입니까?

분류에서Dev

사용자를 검색하기 위해 JavaScript에서 연관 배열을 사용하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    NumPy 배열을 분할하기 위해`numpy.digitize`를 사용한 후 각 bin의 평균을 계산하는 방법은 무엇입니까?

  2. 2

    C ++에서 배열의 평균을 얻기 위해 포인터를 사용하는 방법은 무엇입니까?

  3. 3

    재귀를 사용하여 Java에서 하위 문자열의 발생을 계산하는 방법은 무엇입니까?

  4. 4

    Pandas를 사용하여 GroupBy 객체에서 롤링 평균을 계산하는 방법은 무엇입니까?

  5. 5

    클래스 개체에 대해 get 메서드를 사용하여 평균을 계산하는 방법은 무엇입니까?

  6. 6

    정수 배열에 저장된 값을 반전시키기 위해 Java에서 재귀 메서드를 작성하는 방법은 무엇입니까?

  7. 7

    기간 계산에 사용되는 날짜를 인쇄하기 위해 함수에서 새 열을 만드는 방법은 무엇입니까?

  8. 8

    R에서 기본 값 (평균, SD, SE 등)을 계산하기 위해 데이터 프레임을 다시 포맷하는 방법은 무엇입니까?

  9. 9

    R에서 평균 함수를 사용하지 않고 평균을 계산하는 방법은 무엇입니까?

  10. 10

    범위 10으로 배열의 평균을 계산하는 방법은 무엇입니까?

  11. 11

    postgres를 사용하여 다른 레코드 매핑을 위해 재귀 모드에서 하위 범주 ID를 얻는 방법은 무엇입니까?

  12. 12

    메모리 할당 오류를 피하기 위해 거대한 numpy 배열에서 계산을 처리하는 방법은 무엇입니까?

  13. 13

    try do 함수를 위해 JavaScript에서 재귀를 사용하는 방법은 무엇입니까?

  14. 14

    R의 평균을 계산하기 위해 NaN, Na 및 Inf를 처리하는 방법은 무엇입니까? + 커뮤니티 탐지 지표 측정 후

  15. 15

    laravel에서 특정 날짜의 근무 시간을 계산하기 위해 eloquent를 사용하는 방법은 무엇입니까?

  16. 16

    절대 값을 계산하기 위해 문자열에 주어진 숫자를 사용하는 방법은 무엇입니까?

  17. 17

    배열 스택의 평균을 계산하는 방법은 무엇입니까?

  18. 18

    앱을 평가하기 위해 사용자를 Google Play에 보내는 방법은 무엇입니까?

  19. 19

    np.average를 사용하여 np.nan을 포함하면서 평균을 계산하는 방법은 무엇입니까? (groupby 사용 중)

  20. 20

    Python의 다른 열에 의해 결정된 개별 연속 범위에서 평균 수익을 계산하는 방법은 무엇입니까?

  21. 21

    탄력적 검색 집계를 위해 각 단계에서 평균 일수를 계산하는 방법은 무엇입니까?

  22. 22

    두 개체를 병합하고 Javascript에서 해당 값의 평균을 계산하는 방법은 무엇입니까?

  23. 23

    null 값을 포함하는 키-값 쌍을 제거하기 위해 다차원 배열에서 array_filter () 함수를 재귀 적으로 사용하는 방법은 무엇입니까?

  24. 24

    배열에서 평균을 계산하는 더 효율적인 방법은 무엇입니까?

  25. 25

    몽구스에서 평균을 계산하는 방법은 무엇입니까?

  26. 26

    Android에서 평균 기능을 사용하는 방법은 무엇입니까?

  27. 27

    조건에서 값을 더하기 위해 배열 수식을 사용하는 방법은 무엇입니까?

  28. 28

    반응을 사용하여 확산 연산자를 사용하여 객체 배열에서 객체를 삭제하기 위해 확산 연산자를 사용하는 방법은 무엇입니까?

  29. 29

    사용자를 검색하기 위해 JavaScript에서 연관 배열을 사용하는 방법은 무엇입니까?

뜨겁다태그

보관