给出了示例模式,
input : 16
output: 16 11 6 1 -4 1 6 11 16
如果输入为10,则程序应该打印出以下输出。
10 5 0 5 10
注意:上述序列按5递减/递增。
挑战在于不声明任何变量或循环,仅使用递归。
我尝试使用以下代码。
void sequence(int input, int base){
input = input - (input > 0?5:-5); //main execution
printf("input:%d\n",input);
if(input == base)return;
sequence(input,base);
}
//例如,输入和基本(initial Value)为16。上述方法会递归地执行自身,直到输入=基数。
我可以打印出这个序列(用粗体表示)
16 11 6 1 -4 1 6 11 16
如何完成这个序列。在上述方法中,在主执行行中,我需要检查条件
input = input - (input < 0?5:-5);
来打印剩余的序列。但我不确定如何在没有任何变量或循环的情况下做到这一点。是否有可用的算法或任何其他更好的解决方案。
base
参数...达到递归的顶部帧就足够了。 - user2371524