In the previous article, we have discussed about Java Program to Find Sum of Proper Divisors of a Number by Using Recursion
In this article we are going to see how we can find the number of ways so that a number can be expressed as sum of powers by using recursion.
Java Program to Find Number of Ways to Express a Number as Sum of Powers Using Recursion
As per the problem statement you have to find the number of ways so that a number can be expressed as sum of powers.
For example:
Number = 100 and Power = 2 Then 100 can be expressed as sum of powers as follows 10^2 OR 6^2+8^2 OR 1^2 + 3^2 + 4^2 + 5^2 + 7^2 So there are total 3 ways.
Let’s see the program to understand it more clearly.
- Java Program to Find Number of Ways to Express a Number as Sum of Powers By Using Recursion & Static Input Value
- Java Program to Find Number of Ways to Express a Number as Sum of Powers By Using Recursion & User Input Value
Method-1: Java Program to Find Number of Ways to Express a Number as Sum of Powers By Using Recursion & Static Input Value
Approach:
- Declare and initialize two integer variables say ‘
num
‘ and ‘power
‘ respectively. - Pass both of them to the user defined method
countWays( )
that callscountWaysUtil( )
function which is a recursive function. It calculates the ways we can represent the number as a sum of numbers raised to the specific power. - Print the result.
Program:
import java.util.*; // Main class public class Main { // Recursive method that finds ways to represent number as a sum of power static int countWaysUtil(int x, int power, int num) { // Base cases int val = (int) (x - Math.pow(num, power)); if (val == 0) return 1; if (val < 0) return 0; // Breaks into two cases one with num included and the other one without num return countWaysUtil(val, power, num + 1) + countWaysUtil(x, power, num + 1); } // Returns number of ways to express // x as sum of numbers raised to the specified power static int countWays(int x, int power) { return countWaysUtil(x, power, 1); } public static void main(String[] args) { int num = 100, power =2; // call the method and store the ways int ways = countWays(num,power); System.out.println(num+" can be represented with power "+power+" in "+ways+" ways."); } }
Output: 100 can be represented with power 2 in 3 ways.
Method-2: Java Program to Find Number of Ways to Express a Number as Sum of Powers By Using Recursion & User Input Value
Approach:
- Ask the user to enter a ‘num’ and ‘power’.
- Pass both of them to the countWays( ) function that calls countWaysUtil( ) function which is a recursive function. It calculates the ways we can represent the number as a sumof numbers raised to the specific power.
- Print the result.
Program:
import java.util.*; // Main class public class Main { // recursive method that finds ways to represent number as a sum of power static int countWaysUtil(int x, int power, int num) { // Base cases int val = (int) (x - Math.pow(num, power)); if (val == 0) return 1; if (val < 0) return 0; // Breaks into two cases // one with num included and the other one without num return countWaysUtil(val, power, num + 1) + countWaysUtil(x, power, num + 1); } // Returns number of ways to express // x as sum of numbers raised to the specified power static int countWays(int x, int power) { return countWaysUtil(x, power, 1); } public static void main(String[] args) { // Asking the user for input Scanner sc = new Scanner(System.in); System.out.println("Enter the number and power"); int num = sc.nextInt(), power =sc.nextInt(); // call the method and store the ways int ways = countWays(num,power); System.out.println(num+" can be represented with power "+power+" in "+ways+" ways."); } }
Output: Enter the number and power 100 3 100 can be represented with power 3 in 1 ways.
Access the Simple Java program for Interview examples with output from our page and impress your interviewer panel with your coding skills.
Related Java Programs: