我在生成Terras號碼序列時遇到問題。C中的Terras猜想#
這裏是我的失敗嘗試:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Terras
{
class Program
{
public static int Terras(int n)
{
if (n <= 1)
{
int return_value = 1;
Console.WriteLine("Terras generated : " + return_value);
return return_value;
}
else
{
if ((n % 2) == 0)
{
// Even number
int return_value = 1/2 * Terras(n - 1);
Console.WriteLine("Terras generated : " + return_value);
return return_value;
}
else
{
// Odd number
int return_value = 1/2 * (3 * Terras(n - 1) + 1);
Console.WriteLine("Terras generated : " + return_value);
return return_value;
}
}
}
static void Main(string[] args)
{
Console.WriteLine("TERRAS1");
Terras(1); // should generate 1
Console.WriteLine("TERRAS2");
Terras(2); // should generate 2 1 ... instead of 1 and 0
Console.WriteLine("TERRAS5");
Terras(5); // should generate 5,8,4,2,1 not 1 0 0 0 0
Console.Read();
}
}
}
我在做什麼錯?
我知道遞歸的基礎知識,但我不明白爲什麼這不起作用。
我注意到序列的第一個數字實際上是你傳入的數字,後面的數字是零。
給出的例子似乎不滿足公式。例如,如果't0 == 2',那麼't1 == 1/2 *(3 * 2 + 1)== 3.5'(因爲1是奇數)。公式或例子都是錯誤的 - 找出哪個。 –
是的,但無論我評估它的數據類型是「int」還是「double」,它給了我相同的錯誤答案,我該怎麼辦? – Master345
你怎麼知道答案是錯的?什麼答案是正確的?再次,你展示的例子不符合你給出的公式。他們是這個問題的錯誤答案。他們可能是你沒有顯示的其他問題的正確答案。 –