无需循环打印数字序列的C程序


在这个问题中,我们得到了两个数字N和K。我们的任务是创建一个程序,在不使用任何循环的情况下打印数字序列。

要打印的序列将从n开始,并减去k,直到它变为零或负数。之后,我们将开始向其添加k,直到它再次变为n。在这个过程中,我们不能使用任何类型的循环。

让我们来看一个例子来理解这个问题:

输入

n = 12 , k = 3

输出

12 9 6 3 0 3 6 9 12

为了解决这个问题而不使用循环,我们将使用递归。我们将创建一个递归函数,它将再次调用自身并检查数字的值,以确保要对数字执行加法或减法运算。

该函数将使用一个标志,这将帮助我们跟踪是否要减去或添加值。

无需循环打印数字序列的C程序

// 无需循环打印数字序列的C程序

示例

 在线演示

#include <iostream>
using namespace std;
void PrintSeriesRec(int current, int N, int K, bool flag){
   cout<<current<<"\t";
   if (current <= 0)
      flag = !flag;
   if (current == N && !flag)
      return;
   if (flag == true)
      PrintSeriesRec(current - K, N, K, flag);
   else if (!flag)
      PrintSeriesRec(current + K, N, K, flag);
}
int main(){
   int N = 12, K = 4;
   cout<<"The series is : 
";    PrintSeriesRec(N, N, K, true);    return 0; }

输出

序列是:

12 8 4 0 4 8 12

更新于:2020年7月18日

497 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告