【问题标题】:Recursive function - printing out from zero up to passed number递归函数 - 从零打印到传递的数字
【发布时间】:2015-11-19 06:31:04
【问题描述】:

我在创建一个递归函数时遇到了一个问题,该函数打印出从 0 到传递的数字的偶数。我的问题?它只能有一个参数:int counting(int n)。我不知道该怎么做。主程序中没有循环。您必须从 0 开始,但要以某种方式将其设置为您传递的值。

对方法有什么想法吗?

【问题讨论】:

    标签: recursion


    【解决方案1】:

    对于递归,您需要考虑基本情况(递归将停止并且您将开始返回调用堆栈的情况)。在这种情况下,您的方法需要不断调用自身,直到它降至 0。这意味着您需要在将参数减 1 直到值达到 0 后继续调用它。然后您需要检查是否number 是否为偶数,如果是,则打印该数字。

    这是一个例子:

    def printeven(n):
       if n > 0: 
         printeven(n-1)
       if n % 2 ==0:
         print n 
    

    【讨论】:

      【解决方案2】:

      在打印之前进行递归调用 - 它可以解决问题。 在 Java 中:

      int counting(int n) {
          if (n == 0)
              return n;
          int res = counting(n - 1);
          if (n % 2 == 0)
              System.out.println(n);
          return res;
      }
      

      【讨论】:

        【解决方案3】:

        每个人给出的代码都是一样的,包括c中的这个。

        int counting(int n) {
            if(n)
                counting(n-1);
            if(!(n%2))
                printf("%d\n", n);
        }
        

        诀窍是不断递归直到参数达到0,然后在返回给调用者之前开始打印数字。

        【讨论】:

          猜你喜欢
          • 2023-02-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-09-09
          • 2015-05-18
          • 2012-05-10
          • 1970-01-01
          • 2017-10-13
          相关资源
          最近更新 更多