访问数组中每次按自然数递增的数列下标的值
前些天参加一些程序算法竞赛的时候,被一个小问题困扰了很久;
一个在高中时候学等差等比数列时候很简单的问题,即访问每次按自然数1,2,3,4,5,6,…递增下标的值的问题。
那么如何进行访问数组下标中按自然数递增的值问题:
例如:有数列如下:
1,2,3,4,5,6,7,8,9,10,…
第一次我需要访问第一位的值,即为1;
第二次的时候我需要访问第三位的值,即为3,在第一步访问第一位值的时候跟第二次访问的值已经相差了一个位置;
第三次我需要访问第六位的值,即为6;这一次访问的值与第二次访问的值相差了2个位置;
第四次我需要访问第十位的值,即为10,而这一次访问的值与第三次访问值的位置相差了3个位置;
如此进行下去……
下面给出算法代码:
private static int[] hose = {1,2,3,4,5,6,7,8,9,10}; //数组……public static void find(){int add = 0; //辅助变量for(int i = 0; i <100;i++ ){System.out.println(hose[(i)%10]);add++;i=i+add;}}
public static void find(){int add = 0;for(int i = 0; i <MAX; ){System.out.println(hose[(i)%10]);add++; i++ ;i=i+add;}}