我知道遞歸尾調用是函數調用自己作爲其最後一個操作的時候。即使函數調用不在最後一行,以下內容也會被視爲尾部調用嗎?這是否被視爲尾部呼叫?
void test(int a)
{
if(a == 1)
return;
else if(a % 2 == 0)
test(a/2);
else
test(3 * a - 1);
}
說一個是偶數。將呼叫測試(a/2)視爲尾聲呼叫?
我知道遞歸尾調用是函數調用自己作爲其最後一個操作的時候。即使函數調用不在最後一行,以下內容也會被視爲尾部調用嗎?這是否被視爲尾部呼叫?
void test(int a)
{
if(a == 1)
return;
else if(a % 2 == 0)
test(a/2);
else
test(3 * a - 1);
}
說一個是偶數。將呼叫測試(a/2)視爲尾聲呼叫?
對'test'的調用發生在[tail call](http://en.wikipedia.org/wiki/Tail_call)位置。基本上任何被調用爲* last操作的函數* - 這意味着返回值必須被丟棄或立即返回[但當然這些不適用於'void'] - 處於尾部調用位置。 – user2864740