2014-11-13 1 views
0

저는 Intro to Programming 클래스를 사용하고 있습니다. 재료의 좋은 덩어리는 myProgrammingLab을 통해 우리 머리 속에 뚫려 있습니다. 나는 재귀의 개념에 약간의 문제가있다 ... 일종의 나에게 맞았다. 이 특별한 문제는 저를 곤란하게합니다. 코드를 제출하면myProgrammingLab "palindrome"challenge and recursion

CTest1.cpp: In function 'bool isPalindrome(int*, int)': 
CTest1.cpp:9: error: invalid conversion from 'int' to 'int*' 
CTest1.cpp:9: error: initializing argument 1 of 'bool isPalindrome(int*, int)'" 

과 같은 조언을드립니다. 매우 도움이되지 않습니다. Lol

필자의 주요 문제는 실제 재귀가 발생할 때라고 생각합니다. 나는 무언가가 꺼져 있음을 알고 있습니다. 그러나 만약 당신이 올바른 방향으로 나를 가리킬 수 있다면, 나는 그것을 대단히 감사 할 것입니다.

A '어레이 회문'는 요소가 역순으로 배열은 동일하다 (즉, 순방향 주사 또는 뒤로 때 어레이의 요소들이 동일) 재귀, BOOL이 값

쓰기 함수, 정수로 평가 된 배열을 허용하는 isPalindrome 및 요소 수를 반환하고 배열이 회문인지 여부를 반환합니다.

배열 경우 회문이다 어레이 (0 요소) 비어 있거나 동일한 어레이의 최초 및 최종 요소 또는 (따라서, 반전 된 경우 동일 함) 하나 개의 요소를 포함 및 나머지 배열 (즉, 두 번째 요소부터 마지막 ​​요소까지)은 회문을 형성합니다. 지금까지

내 코드 :

bool isPalindrome(int arr[], int n){ 
    if (n == 0 || n == 1) 
    { 
     return true; 
    } 
    else if (arr[n-1] == isPalindrome(arr[((n-1) - n) +1 ], n)) 
    { 
     return true; 
    } 
    else { 
     return false; 
    } 
} 

편집 :

지금 내 문제 라인을 변경 한 내가 힌트를 얻을 이제

else if (arr[n-1] == isPalindrome(arr[], n-1))

에 "우리는 당신을 생각 +를 사용하는 것이 좋습니다. " 여기에 추가가 적용되는 부분을 볼 수 없습니다. 나는 그것이 코드에서와 같이 "++"로 증가하는 것을 참조하기 때문에 증가하는 것에 대해 말하지는 않는다고 생각합니다.

I는 오류 메시지 부여하고

:

CTest1.cpp을 : 함수에서 'BOOL isPalindrome (INT *를 INT)' CTest1.cpp 9 오류 : 전에 예상 일차 식 '] 토큰

첫 번째 인수에서 대괄호가 비어 있기 때문에 두 번째 줄에 오류가 있습니까? 당신이 반복적으로 호출 할 때

+1

'int arr [] '가 필요한 경우'arr [((n - 1) - n) +1]'이 무엇이라고 생각합니까? –

+0

인수가 전체 배열을 원할 때 배열 요소를 전달합니다. – stark

답변

1

isPalindrome이 두 인수

isPalindrome(arr[((n-1) - n) +1], n) 

두 번째는 괜찮 통과하지만 첫 번째 인수는 배열에서 값 색인을 생성

arr[index] 

로 평가 int으로 평가됩니다. 그것이 int* 또는 다른 말로 찾고 있기 때문에, 시작하는 요소의 주소, 당신은 컴파일러 조언 실제로이 상황에서 당신을 위해 많은 도움이 될 것입니다

&arr[((n-1) - n) +1] 
0

전달할 수 있습니다.

함수에 int를 주지만 함수는 int *를 기대하고 있습니다.

CTest1.cpp:9: error: initializing argument 1 

문제가 코드에 이제

인수 1에 있음을 말하고있다. 이 라인을 참조하십시오 :

else if (arr[n-1] == isPalindrome(arr[((n-1) - n) +1 ], n)) 

당신은 당신이 보내는 첫 번째 인수를 int * 아니라고 볼 수있다 (즉하지 배열에 대한 포인터)하지만, 배열의 요소. 첫 번째 인수로 int를 보냅니다.

이것을 고려하여 코드를 재 작성하십시오.