我對我的控制檯程序有疑問。 它必須使用Horner算法來計數。沒有異常拋出,但是,它並沒有給出正確的結果。Horner算法
如果有人可以幫助我,我將非常感激,因爲我不知道該怎麼辦......
這裏是我的程序的代碼:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Consola_Horner_Rekurencyjnie
{
class Program
{
static void Main(string[] args)
{
int n;
Console.WriteLine("Podaj stopień wielomioanu: ");
n = Convert.ToInt32(Console.ReadLine());
int[] a = new int[++n];
Console.WriteLine("Podaj wartosc a: ");
for (int i = 0; i < n; i++)
{
Console.WriteLine("a [" + i + "] = ");
a[i] = Convert.ToInt32(Console.ReadLine());
}
int x;
Console.WriteLine("Podaj x:");
x = Convert.ToInt32(Console.ReadLine());
int Horner;
Horner = a[0];
for (int i = 1; i < n; i++)
{
Horner = Horner * (i - 1) * x + a[i];
}
Console.WriteLine("Wynik to:" + Horner);
Console.ReadLine();
}
}
}
這是第二個選項計算代碼,但數都是錯誤的:
Func<int, int> Horner = null;
Horner = (i) => (i == 0) ? a[0] : Horner(i - 1) * x + a[i];
Console.WriteLine("Wynik to:" + Horner(x));
Console.ReadLine();
我想重寫從C + +(在遞歸算法的形式)的原代碼。
原來的代碼如下所示:
int Horner;
int n;
int *a = new int[n];
int x;
int main()
{
cout <<"Podaj stopień wielomianu: ";
cin >> n;
cin.ignore();
cout << "Podaj wartość a: \n";
for (int i = 0; i <= n; i++)
{
cout <<"a[" <<i<<"] = ";
cin >> a[i];
cin.ignore();
}
cout <<"Podaj x: ";
cin >> x;
cin.ignore();
cout <<"Wynik to: " << Horner(n);
getchar();
return 0;
}
int Horner (int i)
{
if (i == 0)
return a[0];
else
return Horner (i - 1) * x + a[i];
}
我已經不知道該怎麼辦呢?仍然徘徊在同一個地方......
目前還不清楚你在問什麼 – sll 2012-01-09 14:23:47
你真的想在代碼中做什麼?這是一個需要用戶輸入的應用程序..?如果你的計數是關閉的也看看你的for循環C#是基於索引的0,所以如果你設置的東西開始你的計數在1你需要你的<語句是可變的 - 1你正在混合和匹配計數.. – MethodMan 2012-01-09 14:26:42