简体   繁体   English

具有两个输入的递归 function

[英]Recursive function with two inputs

Write a recursive function called print_num_pattern() to output the following number pattern.写一个递归的 function 调用 print_num_pattern() 到 output 下面的数字模式。

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.给定一个正数 integer 作为输入(例如:12),连续减去另一个正数 integer(例如:3)直到达到 0 或负值,然后连续添加第二个 integer 直到再次达到第一个 integer。

Ex.前任。 If the input is:如果输入是:

12 3 12 3

the output is: output 是:

12 9 6 3 0 3 6 9 12 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)

The most obvious error is that you're calling print_num_pattern(num1 - num2) with only one out of two parameters最明显的错误是您调用print_num_pattern(num1 - num2)时只有两个参数之一

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 

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)
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); 
   } 
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM