C语言求解:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位(约瑟夫问题)

完整代码:

复制代码
/* 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人
退出圈子,问最后留下的是原来第几号的那位*/
#include<stdio.h>

//约瑟夫问题
//递推关系f(n)=(f(n-1)+2)\mod n + 1 
int func(int n){
    if (n==1)
    {
        return 1;
    }
    else{
        return (func(n-1)+2)%n+1;
    }
}

int main(){
    int n;
    printf("输入人数n:");
    scanf("%d",&n);
    printf("最后留下的是原来第%d号的那位",func(n));
    return 0;
}

运行截图:

相关推荐
DuHz15 分钟前
UWB 雷达综述精读:应用、标准、信号处理、数据集、芯片与未来方向——论文阅读
论文阅读·学习·算法·信息与通信·信号处理
diediedei22 分钟前
C++中的适配器模式变体
开发语言·c++·算法
Timmylyx051826 分钟前
Codeforces Round 1075 (Div. 2) 题解
算法·codeforces·比赛日记
hadage23334 分钟前
--- 力扣oj柱状图中最大的矩形 单调栈 ---
算法·leetcode·职场和发展
json{shen:"jing"}34 分钟前
18. 四数之和
数据结构·算法·leetcode
千逐-沐风34 分钟前
SMU-ACM2026冬训周报1st
算法
天赐学c语言35 分钟前
1.25 - 零钱兑换 && 理解右值以及move的作用
c++·算法·leecode
北冥湖畔的燕雀38 分钟前
C++智能指针:告别内存泄漏的利器
c++·算法
傻乐u兔41 分钟前
C语言进阶————数据在内存中的存储1
c语言·数据结构·算法
飞机和胖和黄42 分钟前
考研之C语言第二周作业
c语言·开发语言·考研