Reputation: 51
Write a recursive function called print_num_pattern() to output the following number pattern.
Given a positive integer as input (Ex: 12), subtract another positive integer (Ex: 3) continually until 0 or a negative value is reached, and then continually add the second integer until the first integer is again reached.
Ex. If the input is:
12 3
the output is:
12 9 6 3 0 3 6 9 12
Here's what I tried:
num1 = 12
num2 = 3
def print_num_pattern(num1,num2):
if (num1 == 0 or num1 < 0):
print(num1, end = ' ')
return
print(num1, end = ' ')
print_num_pattern(num1 - num2)
print(num1, end = ' ')
print_num_pattern(num1,num2)
Upvotes: 3
Views: 15099
Reputation: 1
import java.util.Scanner;
public class NumberPattern {
// TODO: Write recursive printNumPattern() method
static void printNumPattern(int num1, int num2){
if(num1 == -1 || num1 < 0)
{
System.out.print(num1 + " ");
return;
}
System.out.print(num1 + " ");
printNumPattern(num1 - num2, num2);
System.out.print(num1 + " " );
}
public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);
int num1;
int num2;
num1 = scnr.nextInt();
num2 = scnr.nextInt();
printNumPattern(num1, num2);
}
}
Upvotes: 0
Reputation: 6056
You are missing an argument in your recursive call. You need to replace this:
print_num_pattern(num1 - num2)
with this:
print_num_pattern(num1 - num2, num2)
Upvotes: 2
Reputation: 4099
The most obvious error is that you're calling print_num_pattern(num1 - num2)
with only one out of two parameters
def print_num_pattern(num1,num2):
if (num1 == 0 or num1 < 0):
print(num1, end = ' ')
return
print(num1, end = ' ')
print_num_pattern(num1 - num2, num2)
print(num1, end = ' ')
It works fine after that
>>> print_num_pattern(12, 3)
12 9 6 3 0 3 6 9 12
Upvotes: 6