C#,雷卡曼数(Recamán Number)的算法与源代码

1 雷卡曼数(Recamán Number)

雷卡曼数(Recamán Number),即Recaman序列被定义如下:
(1) a[0]=0;
(2) 如果a[m-1]-m>0并且这个值在序列中不存在,则a[m]=a[m-1]-m;
(3) 否则a[m]=a[m-1]+m;

雷卡曼序列的前几个数的数值是:0,1,3,6,2,7,13,20,12,21,11,22,10,23,9,,,,
 

2 源程序

using System;
using System.Collections;
using System.Collections.Generic;

namespace Legalsoft.Truffer.Algorithm
{
    public static partial class Number_Sequence
    {
        public static int Recaman_Number(int n)
        {
            int[] arr = new int[n];
            arr[0] = 0;
            for (int i = 1; i < n; i++)
            {
                int curr = arr[i - 1] - i;
                for (int j = 0; j < i; j++)
                {
                    if ((arr[j] == curr) || curr < 0)
                    {
                        curr = arr[i - 1] + i;
                        break;
                    }
                }
                arr[i] = curr;
            }
            return arr[n - 1];
        }

        public static int Recaman_Number_Second(int n)
        {
            if (n <= 0)
            {
                return 0;
            }
            HashSet<int> s = new HashSet<int>();
            s.Add(0);

            int prev = 0;
            for (int i = 1; i < n; i++)
            {
                int curr = (prev - i);
                if (curr < 0 || s.Contains(curr))
                {
                    curr = (prev + i);
                }
                s.Add(curr);
                prev = curr;
            }
            return prev;
        }
    }
}

 ——————————————————————————

POWER BY TRUFFER.CN 50018.COM

3 代码格式

using System;
using System.Collections;
using System.Collections.Generic;namespace Legalsoft.Truffer.Algorithm
{public static partial class Number_Sequence{public static int Recaman_Number(int n){int[] arr = new int[n];arr[0] = 0;for (int i = 1; i < n; i++){int curr = arr[i - 1] - i;for (int j = 0; j < i; j++){if ((arr[j] == curr) || curr < 0){curr = arr[i - 1] + i;break;}}arr[i] = curr;}return arr[n - 1];}public static int Recaman_Number_Second(int n){if (n <= 0){return 0;}HashSet<int> s = new HashSet<int>();s.Add(0);int prev = 0;for (int i = 1; i < n; i++){int curr = (prev - i);if (curr < 0 || s.Contains(curr)){curr = (prev + i);}s.Add(curr);prev = curr;}return prev;}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/461365.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图神经网络与图表示学习: 从基础概念到前沿技术

目录 前言1 图的形式化定义和类型1.1 图的形式化定义1.2 图的类型 2 图表示学习2.1 DeepWalk: 融合语义相似性与图结构2.2 Node2Vec: 灵活调整随机游走策略2.3 LINE: 一阶与二阶邻接建模2.4 NetMF: 矩阵分解的可扩展图表示学习2.5 Metapath2Vec: 异构图的全面捕捉 3 图神经网络…

Expo Router + Supabase使用流程

unsetunset前言unsetunset Expo是一个React-native生态中的一个工具包&#xff0c;提供了非常多的功能&#xff0c;Expo Router是Expo最近推出的功能&#xff0c;其效果类似于Nextjs的router&#xff0c;可以基于目录结构来实现路由。 Supabase是一个开源的postgres数据库&…

yolov8自制数据训练集

目录 1.YOLOv8是啥 2.系统环境 3.安装labelimg 3.1安装 3.2启动 labelimg 4.自制分类图片 4.1 YOLO数据集要求 4.2 图片保存目录 4.3 利用labelimg进行标注 4.4 存储图片 4.5 标注文件 5.数据集训练 5.1yaml文件 5.2训练命令 5.3查看训练过程 5.3.1启动tensorb…

Android AOSP源码研究之万事开头难----经验教训记录

文章目录 1.概述2.Android源下载1.配置环境变量2.安装curl3.下载repo并授权4.创建一个文件夹保存源码5.设置repo的地址并配置为清华源6.初始化仓库7.指定我们需要下载的源码分支并初始化 2.1 使用移动硬盘存放Android源码的坑2.2 解决方法 3.Android源码编译4.Android源烧录 1.…

element ui表格手写拖动排序

效果图&#xff1a; 思路&#xff1a; 重点在于&#xff1a;拖动行到某一位置&#xff0c;拿到这一位置的标识&#xff0c;数据插入进这个位置 vueuse的拖拽hooks useDraggable 可以用&#xff1b;html5 drag能拖动行元素&#xff1b;mounsedown、mounsemove时间实现拖拽 页…

JavaScript基础第六天

JavaScript 基础第六天 今天我们学习数组的遍历&#xff0c;以及数组的其他用法。 1. 数组遍历 1.1. 古老方法 可以使用 for 循环进行遍历。 let arr ["a", "b", "d", "g"]; for (let i 0; i < arr.length; i) {console.log…

火星文:网络时代下的语言

引言 在互联网时代&#xff0c;网络语言的发展日新月异。火星文作为一种特殊的网络表达方式&#xff0c;近年来逐渐兴起并成为了网络文化的一部分。 火星文生成器 | 一个覆盖广泛主题工具的高效在线平台(amd794.com) https://amd794.com/huoxingwen 火星文的兴起时代 火星…

了解物联网漏洞与家庭网络入侵之间的联系

我们的家庭正日益成为一个由互连设备组成的网络。从智能恒温器到联网冰箱&#xff0c;物联网 (IoT) 彻底改变了我们与家庭环境互动的方式。 随着技术进步带来了新的挑战&#xff1a;这些设备容易受到网络威胁以及随之而来的家庭网络入侵风险。 在这篇博文中&#xff0c;我们将…

JCIM | MD揭示PTP1B磷酸酶激活RtcB连接酶的机制

Background 内质网应激反应&#xff08;UPR&#xff09; 中的一个重要过程。UPR是由内质网中的三种跨膜传感器&#xff08;IRE1、PERK和ATF6&#xff09;控制的细胞应激反应&#xff0c;当内质网中的蛋白质折叠能力受到压力时&#xff0c;UPR通过减少蛋白质合成和增加未折叠或错…

基础图算法与社交网络分析

目录 前言1 寻找最短路径的Dijkstra算法1.1 介绍1.2 算法步骤1.3 应用领域1.4 算法优势与限制 2 构建高效网络结构的最小生成树算法2.1 Kruskal算法2.2 应用领域2.3 算法优势与限制 3 中心度算法3.1 PageRank算法3.2 Degree Centrality&#xff08;度中心度&#xff09;3.3 Bet…

项目02《游戏-12-开发》Unity3D

基于 项目02《游戏-11-开发》Unity3D &#xff0c; 任务&#xff1a;实现场景怪物自动巡航 &#xff0c; 首先在场景中创建小球命名为路径点WayPoint0&#xff0c; 取消小球的碰撞器Collider&#xff0c; 再复制两个改名为WayPoint1 和 WayPoint2 &#xff0c; 在…

Kubernetes基础(十五)-k8s网络通信

1 k8s网络类型 2 Pod网络 2.1 同一pod内不同容器通信 Pod是Kubernetes中最小的可部署单元&#xff0c;它是一个或多个紧密关联的容器的组合&#xff0c;这些容器共享同一个网络命名空间和存储卷&#xff0c;因此Pod中的所有容器都共享相同的网络命名空间和IP地址——PodIP&a…