男人的謊言可以騙女人的壹夜! 女人的謊言可以騙男人的壹生!
[CODE]using System;
namespace temp
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
//public void run(int num);
//public void compute(int t,int sum);
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//
temp.Class1 a=new Class1 ();
a.run (3);
}
protected int num;
protected int[] a = new int[300];//////////////////////不一定数组里有300个元素,也可是变化的
protected int[] x = new int[300];//////////////////////
////////run函数,就调用它就可以了
public void run(int num)//输入数组个数
{
for(int i=0;i<num;i++)//初始化int[] a
{
Console.WriteLine("请输入第"+(i+1).ToString()+"个数字!");
a[i]=Convert.ToInt32(Console.ReadLine());
}
compute(1,0);//开始递归调用,compute是递归函数
}
////////////compute函数,由程序的run函数自动调用,不用手动调用
public void compute(int t,int sum)//int t 代表递归层数, int sum 代表a1x1+a2x2+a3x3+a4x4+a5x5................的和
{
if(t>num)//num是run函数中得到的数组个数,这是最后依次调用,输出结果!
{
for(int i=0;i<num;i++)
{
Console.WriteLine("x"+i.ToString()+":");
}
Console.WriteLine("和是:"+sum.ToString());
Console.WriteLine("---------------------------------------------------------------");
}
else
{
for(int i=0;i<300;i++)///////////分成300种情况
{
x[t-1]=i;
sum+=a[t-1]*x[t-1];
if(sum<300)//////////如果有满足条件的可能,再深入调用
{
compute(t+1,sum);
}
else
{
return;////以知不可能满足条件,即已经超范围了.
}
}
}
}
}
}[/CODE]
因为你第二个函数调用了第一个里面的x a变量
我建立了一个控制台测试了一下你的程序
不过好象输出是0
你看是不是我改你的程序改出问题了
我看看啊!研究中................
我按照你说的加了static可是编译的时候告诉我
D:\Workspace\c#\number\number\Form1.cs(53): 非静态的字段、方法或属性“temp.Class1.x”要求对象引用
D:\Workspace\c#\number\number\Form1.cs(53): 非静态的字段、方法或属性“temp.Class1.a”要求对象引用
D:\Workspace\c#\number\number\Form1.cs(32): 非静态的字段、方法或属性“temp.Class1.a”要求对象引用
D:\Workspace\c#\number\number\Form1.cs(41): 非静态的字段、方法或属性“temp.Class1.num”要求对象引用
D:\Workspace\c#\number\number\Form1.cs(39): 非静态的字段、方法或属性“temp.Class1.num”要求对象引用
D:\Workspace\c#\number\number\Form1.cs(52): 非静态的字段、方法或属性“temp.Class1.x”要求对象引用
这个问题怎么解决呀~
不好意思 哈 问这么低级的问题
[此贴子已经被作者于2006-6-28 20:55:47编辑过]