이 튜토리얼에서는 정수가 주어진 고유수의 n승의 합으로 표현될 수 있는 방법의 수를 찾는 프로그램을 작성할 것입니다.
두 개의 정수 숫자가 있습니다. 및 힘 . 그리고 우리는 주어진 숫자를 얼마나 많은 방법으로 나타낼 수 있는지 찾아야 합니다. 고유한 자연수의 n승의 합. 예를 들어 보겠습니다.
입력 - 숫자 =50, 거듭제곱 =2
출력 - 3
2의 거듭제곱의 합으로 4를 쓸 수 있는 유일한 방법이 있습니다.
우리는 문제를 해결하기 위해 재귀를 사용할 것입니다. 문제를 해결하는 단계를 살펴보겠습니다.
-
숫자와 전원을 초기화합니다.
-
적절한 이름으로 재귀 함수를 작성하십시오. 숫자를 허용합니다. , 힘 그리고 나 인수로.
-
숫자인 경우 0보다 작거나 pow(i, power) 숫자보다 큼 , 0을 반환합니다.
-
숫자가 0이거나 pow(i, power)가 숫자와 같으면 1을 반환합니다.
-
총 방법 수를 계산하는 함수에 대한 두 개의 재귀 호출이 있습니다.
-
i 증가 .
-
첫 번째 재귀 호출에서 지정된 번호보다 작은 번호를 확인합니다.
-
두 번째 재귀 호출에서 지정된 번호를 확인합니다.
-
예
코드를 봅시다.
#include <bits/stdc++.h> using namespace std; int findPossibleWaysCount(int number, int power, int i = 1) { if(number < 0 || number < pow(i, power)) { return 0; } if(number == 0 || number == pow(i, power)) { return 1; } return findPossibleWaysCount(number - pow(i, power), power, i + 1) + findPossibleWaysCount(number, power, i + 1); } int main() { // initializing the number and power int number = 50, power = 2; cout << findPossibleWaysCount(number, power) << endl; return 0; }
출력
위의 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.
3
결론
튜토리얼에서 질문이 있는 경우 댓글 섹션에 언급하세요.