题目:(填空)
求1个整数的第k位数字有很多种方法。以下的方法就是一种。
public class Main
{
static int len(int x){
if(x<10) return 1;
return len(x/10)+1;
}
// 取x的第k位数字
static int f(int x, int k){
if(len(x)-k==0) return x%10;
return ______________________; //填空
}
public static void main(String[] args)
{
int x = 23513;
//System.out.println(len(x));
System.out.println(f(x,3));
}
}
请仔细分析源码,并补充划线部分所缺少的代码。
注意:只提交缺失的代码,不要填写任何已有内容或说明性的文字。
分析:
题目中需要填空的位置明显需要进行一次递归操作。
因为空格之前执行的语句让我们判断出len(x)是大于k的,
所以k不变,x删除个位。
空格内容为 f(x/10,k)
代码:
public class E_FetchBit
{
static int len(int x){ //这是递归求数字的长度
if(x<10) return 1;
return len(x/10)+1; //如果长度大于10,就除以10,目的是把个位数去掉,数位少一
}
// 取x的第k位数字
static int f(int x, int k){
if(len(x)-k==0) return x%10;
// return ______________________; //填空
return f(x/10,k); //可以由上面的len递归猜测递归是题目给的提示
}
public static void main(String[] args)
{
int x = 23513;
//System.out.println(len(x));
System.out.println(f(x,3));
}
}