问题–给定两个数字N和K,我们的任务是从N中减去数字K,直到number(N)大于零,一旦N变为负数或零,我们就开始加K直到该数字成为原始数字(N )。
注意:不允许使用任何循环。
例子 :
Input : N = 15 K = 5
Output : 15 10 5 0 1 5 10 15
Input : N = 20 K = 6
Output : 20 14 8 2 -4 2 8 14 20
解释–我们可以使用递归的想法来做到这一点,那就是我们一次又一次地调用该函数,直到N大于零为止(在每个函数调用中,我们将N减去K)。一旦数字变为负数或零,我们就开始在每个函数调用中添加K,直到数字变为原始数字为止。这里我们使用一个单一的函数加法和减法,而是加法或减法函数之间,我们使用了布尔标志开关。
// C++ program to Print Number
// series without using loop
#include
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;
}
输出:
20 14 8 2 -4 2 8 14 20
请参考有关打印编号系列的完整文章,而无需使用任何循环以获取更多详细信息!
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。