我已经卡住了算法来打印这个数字,让我们说我们有11个整数,N
的最大值是5然后我们必须像这个1 2 3 4 5 4 3 2 1 2 3
。有人可以给我一些想法或算法来打印这个数字
答案 0 :(得分:3)
在任何类C语言(C ++,C#,Java,JavaScript等)中,您都可以编写
int N = 5;
for(int i = 1; i < N; i++)
{
// Print i:
// System.out.print(i + " "); in Java
// Console.Write(i + " "); in C#
// cout << i << " "; in C++
}
for (int i = N; i >= 1; i--)
{
// Print i
}
答案 1 :(得分:1)
递归版;
void printNum(int val, int max) {
printf("%d\n", val)
if (val < max) {
printNum(val+1,max);
printf("%d\n", val)
}
}
printNum(1,5);
答案 2 :(得分:1)
没有分支在一个循环中:
constexpr static const int N = 5;
for(int i = 0; i < 11; ++i)
std::cout << (N - std::abs(i % ((N - 1) * 2) - (N - 1))) << ' ';
产生
1 2 3 4 5 4 3 2 1 2 3
答案 3 :(得分:0)
一些伪代码
var nmax = 11
var N = 5
var i = 1
var numbersPrinted = 0
var increment = +1
While numbersPrinted <nmax
{
if (i = N and increment = +1) or (i = 1 and increment = -1) then increment = -increment
i = i + increment
numbersPrinted = numbersPrinted +1
print i
}
答案 4 :(得分:-2)
在Java中:
class slcal {
public static void main(String[] args) {
int Nmax = Integer.parseInt(args[0]);
int N = Integer.parseInt(args[1]);
int t = 1, k = 1;
while (t <= N) {
for (; k <= Nmax && t <= N; k++, t++)
System.out.print(k);
for (k = Nmax - 1; k > 0 && t <= N; k--, t++)
System.out.print(k);
k = 2;
}
}
}
产地:
1 2 3 4 5 4 3 2 1 2 3