/plants
嗨,我需要重写这个函数,使它没有递归。我尝试用数学方法解决这个问题,但无济于事。我是编程新手,所以任何帮助都将不胜感激。提前谢谢!
答案 0 :(得分:3)
我认为你的问题确实应该是public static Cursor getAddressCursor(ContentResolver contactHelper, String startsWith) {
logger.v("getAddressCursor");
Cursor cursor = null;
try {
if (startsWith != null && !startsWith.equals("")) {
cursor = contactHelper.query(
ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_URI,
null,
ContactsContract.Contacts.DISPLAY_NAME + " LIKE '" + startsWith + "%'",
null,
ContactsContract.Contacts.DISPLAY_NAME + " ASC");
} else {
cursor = contactHelper.query(
ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_URI,
null,
null,
null,
ContactsContract.Contacts.DISPLAY_NAME + " ASC");
}
} catch (Exception e) {
e.printStackTrace();
}
return cursor;
}
。
然后检查您的功能,我们看到if(x>0)
,否则foo(0)=1
。因此foo(x)=(x-1)+2*foo(x-1)
仅取决于foo(x)
。因此,您可以简单地使用迭代来推进结果
foo(x-1)
如果确实是int foo(int x)
{
auto result=1; // result if x=0
for(int n=0; n!=x; ++n) // increment result to desired x
result=n+2*result; // corresponds to (x-1)+2*foo(x-1) in original
return result;
}
,我会将其作为练习留给您调整代码。