【发布时间】:2012-12-04 06:32:44
【问题描述】:
如何使用递归函数提升二进制数组。 该函数接收二进制数组 V 并将 V 表示的数字的值增加以下具有相同数量的数字。如果操作可以执行,函数返回true(java)
例子:
v = {0,0,0,1,1,0,0,1,1} => return true, v = {0,0,0,1,1,0,1,0,1}
我写这个:
public static boolean incrementSameOnes(int[] vec) {
boolean succ=false;
int[] v=new int[vec.length-1];
if(vec.length==1){
return false;
}
if (vec[vec.length-1]==1 && vec[vec.length-2]==0)
{
vec[vec.length-2] = 1;
vec[vec.length-1] = 0;
System.out.print(Arrays.toString(vec));
return true;
}else {
for(int j=0;j<vec.length-1;j++)
v[j]=vec[j];
succ=incrementSameOnes(v);
}
return succ;
}
【问题讨论】:
-
我写了另一个函数,它简单地提升数组一个而不管统一的数量,然后使用递归函数我使用它,但我不能做出停止条件
-
"promote" 这个词在这种情况下是什么意思?如果是increment,你的例子不正确。
-
本意是函数增加数组但保持Unity数量不变
-
而对于 Unity,您的意思是 相同数量的设置位?
-
谢谢问题不在于一点,而在于0和1的表示例如以下矩阵:{{101},{1,1,0},{1,1,0} } -->返回{{1,0,1}{1,1,1},{0,0,1}}
标签: java arrays function recursion