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;
}

运行截图:

相关推荐
地平线开发者14 小时前
profiler debug 工具用法与高一致性策略
算法·自动驾驶
编程大师哥14 小时前
匿名函数 lambda + 高阶函数
java·python·算法
我叫袁小陌14 小时前
算法解题思路指南
算法
地平线开发者14 小时前
Conv+BN+Add+ReLU 融合机制简介
算法·自动驾驶
yuanyuan2o214 小时前
模型预训练:Hugging Face Transformers 基础
算法·ai·语言模型·自然语言处理·nlp·深度优先
杨充14 小时前
1.3 浮点型数据设计灵魂
开发语言·python·算法
妄想出头的工业炼药师15 小时前
GS slam mono
算法·开源
_日拱一卒16 小时前
LeetCode:207课程表
java·数据结构·算法·leetcode·职场和发展
用户9874092388718 小时前
llamafactory 0.6.3 没有 llamafactory-cli
算法