问题—— 给定两个数N和K,我们的任务是从N中减去一个数K,直到数(N)大于零,一旦N变成负数或零,我们就开始加K,直到这个数变成原来的数(N)。 注: 不允许使用任何循环。 例如:
null
Input : N = 15 K = 5 Output : 15 10 5 0 1 5 10 15Input : N = 20 K = 6Output : 20 14 8 2 -4 2 8 14 20
解释—— 我们可以使用 递归 我们反复调用函数,直到N大于零(在每次函数调用中,我们用K减去N)。一旦这个数字变成负数或零,我们就开始在每个函数调用中添加K,直到这个数字变成原来的数字。在这里,我们对加法和减法都使用一个函数,但为了在加法或减法函数之间切换,我们使用了布尔函数 旗帜 .
C++
// C++ program to Print Number // series without using loop #include <iostream> using namespace std; // function print series // using recursion void PrintNumber( int N, int Original, int K, bool flag) { // print the number cout << N << " " ; // change flag if number // become negative if (N <= 0) flag = !flag; // base condition for // second_case (Adding K) if (N == Original && !flag) return ; // if flag is true // we subtract value until // number is greater then zero if (flag == true ) { PrintNumber(N - K, Original, K, flag); return ; } // second case (Addition ) if (!flag) { PrintNumber(N + K, Original, K, flag); return ; } } // driver program int main() { int N = 20, K = 6; PrintNumber(N, N, K, true ); return 0; } |
JAVA
// Java program to Print Number // series without using loop import java.io.*; import java.util.*; class GFG { public static void PrintNumber( int N, int Original, int K, boolean flag) { // print the number System.out.print(N + " " ); // change flag if number // become negative if (N <= 0 ) flag = !flag; // base condition for // second_case (Adding K) if (N == Original && !flag) return ; // if flag is true // we subtract value until // number is greater then zero if (flag == true ) { PrintNumber(N - K, Original, K, flag); return ; } // second case (Addition ) if (!flag) { PrintNumber(N + K, Original, K, flag); return ; } } public static void main (String[] args) { int N = 20 , K = 6 ; PrintNumber(N, N, K, true ); } } // This code is contributed by Mohit Gupta_OMG |
Python3
# Python program to Print Number # series without using loop def PrintNumber(N, Original, K, flag): #print the number print (N, end = " " ) # change flag if number # become negative if (N < = 0 ): if (flag = = 0 ): flag = 1 else : flag = 0 # base condition for # second_case (Adding K) if (N = = Original and ( not (flag))): return # if flag is true # we subtract value until # number is greater then zero if (flag = = True ): PrintNumber(N - K, Original, K, flag) return # second case (Addition ) if ( not (flag)): PrintNumber(N + K, Original, K, flag); return N = 20 K = 6 PrintNumber(N, N, K, True ) # This code is contributed by Mohit Gupta_OMG |
C#
// C# program to Print Number // series without using loop using System; public class GFG { // function print series // using recursion static void PrintNumber( int N, int Original, int K, bool flag) { // print the number Console.Write(N + " " ); // change flag if number // become negative if (N <= 0) flag = !flag; // base condition for // second_case (Adding K) if (N == Original && !flag) return ; // if flag is true // we subtract value until // number is greater then zero if (flag == true ) { PrintNumber(N - K, Original, K, flag); return ; } // second case (Addition ) if (!flag) { PrintNumber(N + K, Original, K, flag); return ; } } // driver program static public void Main () { int N = 20, K = 6; PrintNumber(N, N, K, true ); } } // This code is contributed by vt_m. |
PHP
<?php // PHP program to Print Number // series without using loop // function print series // using recursion function PrintNumber( $N , $Original , $K , $flag ) { // print the number echo ( $N . " " ); // change flag if number // become negative if ( $N <= 0) $flag = ! $flag ; // base condition for // second_case (Adding K) if ( $N == $Original && ! $flag ) return ; // if flag is true // we subtract value until // number is greater then zero if ( $flag == true) { PrintNumber( $N - $K , $Original , $K , $flag ); return ; } // second case (Addition ) if (! $flag ) { PrintNumber( $N + $K , $Original , $K , $flag ); return ; } } // Driver Code $N = 20; $K = 6; PrintNumber( $N , $N , $K , true); // This code is contributed by Ajit. ?> |
Javascript
<script> // Javascript program to Print Number // series without using loop // function print series // using recursion function PrintNumber(N, Original, K, flag) { // print the number document.write(N + " " ); // change flag if number // become negative if (N <= 0) flag = !flag; // base condition for // second_case (Adding K) if (N == Original && !flag) return ; // if flag is true // we subtract value until // number is greater then zero if (flag == true ) { PrintNumber(N - K, Original, K, flag); return ; } // second case (Addition ) if (!flag) { PrintNumber(N + K, Original, K, flag); return ; } } // Driver Code let N = 20, K = 6; PrintNumber(N, N, K, true ); // This code is contributed by _saurabh_jaiswal </script> |
输出:
20 14 8 2 -4 2 8 14 20
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END