문제

나는 c 코스를하고있다. 재귀 XOR 바이너리를 수행해야하지만 몇 가지 제한 사항이 있습니다. 루프 나 Math.h 함수를 사용할 수 없으며 XOR 함수에서 다른 함수를 호출 할 수 없습니다.

이것은 기능 프로토 타입입니다.

int binaryXor(int firstnumber[], int secondnumber[], int length);

FirstNumber와 SecondNumber는 길이가 1 및 0 인 배열이며 길이는 길이입니다.

함수는이 두 배열의 XOR의 소수점 값을 반환해야합니다. XOR을 수행하는 것은 매우 간단하지만 모든 제한 사항으로 어떻게 10 진수로 변환 할 수 있습니까?

도움이 되었습니까?

해결책

이것은 표준 재귀 질문입니다. 속임수는 1s 및 0의 AA 문자열의 정수 값과 1 또는 0의 정수 값이 문자열의 정수 값과 숫자의 값이라는 것을 인식하는 것입니다.

그래서 당신은 같은 일을하고 싶을 것입니다

if( length <= 0) return 0;

return 2 * binaryXOR(firstnumber, secondnumber, length - 1) + (firstnumber[length - 1] ^ secondnumber[length - 1]);

다른 팁

루프가없는 재귀 기능을 작성하려면 다음 질문에 답해야합니다.

"작은 문제로 인해 내 문제에 대한 답을 어떻게 표현할 수 있습니까?"

이 경우 문제는 length 숫자를 볼 수 있지만 루프는 허용되지 않습니다. 그래서, 당신은 크기의 xor를 어떻게 표현합니까? length 작은 XOR 측면에서 루프가 필요하지 않은 양의 작업과 함께?

편집 : 매달려, 단지 질문을 다시 보았습니다. 이미 XOR을 정렬했다고 말하면 이미이 작업을 수행했을 것 같습니다. 이 경우 위의 내 의견은 당신이 알아야 할 유일한 것입니다 : 당신은 끝났습니다. an int C에서는 소수점 값이 아니라 값 일뿐입니다. 저장하거나 반환하기 위해 소수로 변환 할 필요가 없습니다. int.

관심이 있으시면 재귀 함수를 사용하여 int를 소수점 값으로 변환하는 코드를 게시 할 수 있습니다. 한 가지 간단한 방법 중 하나는 10의 더 크고 더 큰 힘과 비교하여 몇 자리 숫자가 필요하다고 한 다음 끝까지 시작하는 "Up"으로 돌아가는 길에 "다운"이 필요합니다.

재귀 함수 호출은 루프 대신에 사용할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top