访问数组中每次按自然数递增的数列下标的值

前些天参加一些程序算法竞赛的时候,被一个小问题困扰了很久;

一个在高中时候学等差等比数列时候很简单的问题,即访问每次按自然数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;
}
}



同时这里需要理解for循环的执行过程,先初始化,再比较迭代变量的值是否小于或者是大于,如果符合则执行循环体中的代码,最后是要将迭代变量的值自增;

上面的for循环等价于下面的:


public static void find(){
int add = 0;
for(int i = 0; i <MAX; ){
System.out.println(hose[(i)%10]);
add++;
i++ ;
i=i+add;
}
}



算法或者代码如果有错误或者不好的地方,敬请指出,让我们一起进步,谢谢~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值