約瑟夫環遞歸寫法

來自百度百科:

 編輯
約瑟夫環(約瑟夫問題)是一個數學的應用問題:已知n個人(以編號1,2,3...n分別表示)圍坐在一張圓桌周圍。從編號爲k的人開始報數,數到m的那個人出列;他的下一個人又從1開始報數,數到m的那個人又出列;依規律重複下去,直到圓桌周圍的人全部出列。通常解決這類問題時我們把編號從0~n-1,最後[1]  結果+1即爲原問題的解。
如有錯誤,請指正。
自己的具體代碼如下:
//約瑟夫環//
#include<stdio.h>
//返回的是第K次出隊的人的編號//  
int ysfh ( int n, int m, int k)
{
    if ( k == 1 )
        return ( n + m - 1 ) %n;
    else
        return ( ysfh ( n-1, m,k-1 ) +m ) %n;
}
//n是總人數,m是隔多少個人出隊,k是第幾次//
int main()
{
	int n,m,alive;
	scanf("%d %d %d",&n,&m,&alive); 
	//循環輸出// 
	for(int i=1;i<=n-alive;i++)  
        printf("第%d個出隊的人的的編號:%d\n",i,ysfh(n,m,i)+1);  
}
  

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