一、题目
两个整数做除法,有时会产生循环小数,其循环部分称为:循环节。
比如,11/13=6=>0.846153846153..... 其循环节为[846153] 共有6位。
下面的方法,可以求出循环节的长度。
请仔细阅读代码,并填写划线部分缺少的代码。
public static int f(int n, int m)
{
n = n % m;
Vector v = new Vector();
for(;;)
{
v.add(n);
n *= 10;
n = n % m;
if(n==0) return 0;
if(v.indexOf(n)>=0) _________________________________ ; //填空
}
}
二、代码分析
package Lan2015;
public class XunHuanJieChangDu {
public static void main(String[] args) {
/*两个整数做除法,有时会产生循环小数,其循环部分称为:循环节。
比如,11/13=6=>0.846153 846153..... 其循环节为[846153] 共有6位。
下面的方法,可以求出循环节的长度。
请仔细阅读代码,并填写划线部分缺少的代码
public static int f(int n, int m)
{
n = n % m; //用来得到余数
Vector v = new Vector();//创建一个Vector数组
for(;;) // 无限的循环
{
v.add(n);//给v里加了个数,即刚才的余数
n *= 10;//将余数扩大10倍
n = n % m;//再除以m取余数,
if(n==0) return 0;//能整除的情况
if(v.indexOf(n)>=0) //查找数组中n元素的索引,并返回索引值
_________________________________ ; //填空
}
}*/
// 1/3= 0.3333
//1%3==1
//进入循环
//v{1}
//n = n * 10 = 1 * 10 = 10
//n = n % m = 10 % 3= 1
//n != 0
//v.indexOf(1) = 0,return v.size() - v.indexOf(n) = 1 -0 = 1
//7/18 = 0.388888
//7%18=7
//n=7
//for
//v{7}
//n=70
//n=70%18=16
//for
//v{7,16}
//n=160
//160%18=16
//v.indexOf(16)=1>0,return 2-1=1
}
}
3.反思
理解每一行代码的意思,然后找一些值代入计算一下,要找一些特殊的值