我有一个练习,我必须编写一个递归方法来接收一个整数和一个数字d。这个方法必须返回一个新的数字,只包含大于d的数字。递归 - 返回一个数字大于参数的新数字
例如,对于数19473,数位3,返回的数字将是947
到目前为止,我还没有得到我的代码一定进展,所以我没有什么可以炫耀您。 该方法的签名:
public static int filter(int n, int d)
任何帮助将是巨大的,
谢谢。
我有一个练习,我必须编写一个递归方法来接收一个整数和一个数字d。这个方法必须返回一个新的数字,只包含大于d的数字。递归 - 返回一个数字大于参数的新数字
例如,对于数19473,数位3,返回的数字将是947
到目前为止,我还没有得到我的代码一定进展,所以我没有什么可以炫耀您。 该方法的签名:
public static int filter(int n, int d)
任何帮助将是巨大的,
谢谢。
这里是很详细的答案:
int filter(int n, int d) {
if (n >= 0 && d >= 0) { // n and d non-negetive
if (n == 0) { // terminating criteria
return 0;
} else {
int currDigit = n % 10;
if (n % 10 > d) {
return filter(n/10, d) * 10 + currDigit; //gathering digits greater thand d
} else {
return filter(n/10, d); // ignoring digits less than or equal d
}
}
}
return -1;
}
有一件事你应该知道,如果你是在编码新的,并希望成为一个伟大的编码器!我对你的建议是,不要拿走你的大脑中的机会来思考编码问题!永远相信你的大脑。保持耐心。尝试并再试一次。
干杯和快乐编码!
谢谢,谢谢那个建议:-) – Alan 2013-05-10 16:28:38
不客气...... :) – 2013-05-10 16:31:01
public static int filter(int n, int d)
{
if (n==0) return 0;
if (n%10>d) return 10*filter(n/10,d)+n%10;
else return filter(n/10,d);
}
关键理解:
甲整数n个(n> 10)中,假设A = N/10 B = N%10。你可以看到filter(n)=(String)filter(a)+(String)filter(b)(我的意思是将结果转换为字符串并连接两个字符串,它在语法上是无效的,它只是理解它)。
但是我们不需要用String来弄脏手,算术对于整数将做同样的工作。
任何你试图得到想要的结果? – 2013-05-10 04:23:36
到目前为止我已经得到了..没有:( – Alan 2013-05-10 04:24:15
所以你不会在没有尝试的情况下从这里得到任何东西:p – stinepike 2013-05-10 04:25:33