遞歸約瑟夫一點理解

int Joseph_recursive(int sum, int value, int n)
{
	if (n == 1)
	{
		return (value - 1) % sum;
	}
	else
	{
		return (Joseph_recursive(sum - 1, value, n - 1) + value) % sum;
	}
}

第一步,限定遞歸的範圍,就是當遞歸次數到達最後一次的時候,即 n == 1 的時候,此時下標爲死亡間隔 - 1得到的下標膜上當前的人數。

第二步,確定每一步遞歸的算法,就是通過上一輪的下標求出當前環的下標並傳遞給下一個環,即上一個環的下標加上死亡間隔再膜上當前環的人數。

一句話總結,通過上一個環的下標值傳遞給當前環再傳遞給下個環,第一個環的下標用死亡間隔取下標再膜上一個環的總人數來取得。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章