【发布时间】:2019-04-03 10:39:22
【问题描述】:
我们有一个长度为 3 的数组和一些计数序列:0,1,2,3,4,... 到无穷大。在该输入序列中,我们需要生成将在数组中来回遍历的序列,例如:0,1,2,1,0,1,2,1,0,... 等等 length=3。
我认为这个任务在许多编程书籍中是一个非常常见的任务,但我无法找到标准解决方案,所以我创建了自己的解决方案。有没有其他更有效和优雅的解决方案,因为我不喜欢我的解决方案???
#define LENGTH 5
int main()
{
char arr[LENGTH] = {'a','b','c','d','e'};
int i;
int base=0;
for(i=0;i<100;i++){
if(i%(LENGTH-1)==0){
if(base==0) base=LENGTH-1;
else base =0;
}
int j = abs(base-i%(LENGTH-1));
printf("%c ",arr[j]);
}
}
Java 代码(为了您的方便):
public static void traverse(){
char arr[] = {'a','b','c','d','e'};
int base=0;
for(int i=0;i<100;i++){
if(i%(arr.length-1)==0){
if(base==0) base=arr.length-1;
else base =0;
}
int j = Math.abs(base-i%(arr.length-1));
System.out.println(arr[j]+" ");
}
}
【问题讨论】:
-
请不要标记无关的语言。
-
删除了 Java 标记,因为该问题与 Java 无关
-
项目正在使用 Java。我使用 C 进行调整。语言与此类问题无关。
-
“语言与此类问题无关” — 如果语言与您的问题无关,则不要标记它们。
-
您的问题是“无限”。你的程序永远不会终止。
标签: java c arrays algorithm mod