雷卡曼数(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,,,,
  

源程序:
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










