Другая альтернатива, которая использует массив, но только маленький, который имеет постоянный размер двух элементов, независимо от того, сколько чисел в последовательности будет:
{
int i;
int iray[] = {1, 2};
int n = 15;
for (i = 1; i < n; i += iray[i > 2]) {
printf (" i = %d \n", i);
// code
}
}
, который производит:
i = 1
i = 2
i = 3
i = 5
i = 7
i = 9
i = 11
i = 13
Распространение этой альтернативы на другие последовательности
И эту альтернативу можно распространить на другие последовательности, где происходят изменения аналогичного характера. Например, если желаемая последовательность была
1, 2, 3, 5, 8, 11, ..
Что включает в себя несколько изменений в последовательности. Начиная с 1, используется приращение 1, за которым следует первое изменение приращения, начинающееся с 3, когда используется приращение 2, за которым следует второе изменение в последовательности, начинающейся с 5, когда используется приращение 3, вы можете внести следующие изменения .
{
int i;
int iray[] = {1, 2, 3}; // increment changes
int n = 15;
// calculate the increment based on the current value of i
for (i = 1; i < n; i += iray[(i > 2) + (i > 3)]) {
printf (" i = %d \n", i);
// code
}
return 0;
}
что даст:
i = 1
i = 2
i = 3
i = 5
i = 8
i = 11
i = 14