| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2734 人关注过本帖
标题:[求助]一个C#面试题,大家看看怎么做!!!
只看楼主 加入收藏
xupeng
Rank: 1
等 级:新手上路
帖 子:4049
专家分:0
注 册:2006-2-12
收藏
得分:0 
我的想法是写2个函数,一个递归,一个调用那个递归函数!递归函数的一个参数表示递归的层数,一个参数引用数组.
第一层递归解决X[0]=1,2,3,4,5,......300,所有的情况,第二层递归解决X[1]=1,2,3,4,5,6.....300,的所有情况............
总之,X[]有几个元素,就递归几层!
这个是有点难度,不过实际当中用不上!

[此贴子已经被作者于2006-6-27 16:36:12编辑过]


反清复明 http://xupeng.
2006-06-27 16:32
xupeng
Rank: 1
等 级:新手上路
帖 子:4049
专家分:0
注 册:2006-2-12
收藏
得分:0 
对了a[]中,每个元素的范围你还没告诉我啊!
这个需要知道a的范围.
不过我猜,a是1--300的正整数!

反清复明 http://xupeng.
2006-06-27 16:34
月夜枫华
Rank: 4
等 级:贵宾
威 望:12
帖 子:437
专家分:42
注 册:2006-1-2
收藏
得分:0 
应该是线性代数的知识吧,没办法,我上大一的时候光玩了,线数学的太烂.

2006-06-27 16:48
xupeng
Rank: 1
等 级:新手上路
帖 子:4049
专家分:0
注 册:2006-2-12
收藏
得分:0 
我没学什么线性代数,但我觉得就应该这么编.

反清复明 http://xupeng.
2006-06-27 16:58
noshow
Rank: 2
等 级:新手上路
威 望:4
帖 子:1127
专家分:0
注 册:2006-4-21
收藏
得分:0 

纯数据结构问题呀~偶当初笔试时候做过这种题
比较恶心
1个小时6道编程题...
那题满分10分只给偶2分


此号自封于2006年11月30日
2006-06-27 17:02
xupeng
Rank: 1
等 级:新手上路
帖 子:4049
专家分:0
注 册:2006-2-12
收藏
得分:0 
楼上的几位,还需要偶写代码吗?

反清复明 http://xupeng.
2006-06-27 17:12
零点冻结
Rank: 1
等 级:新手上路
帖 子:67
专家分:0
注 册:2005-12-2
收藏
得分:0 
我现在还没有答案,我会拿到答案的
到那时我给大家贴出来,请大家关注!

2006-06-28 09:08
noshow
Rank: 2
等 级:新手上路
威 望:4
帖 子:1127
专家分:0
注 册:2006-4-21
收藏
得分:0 
以下是引用xupeng在2006-6-27 17:12:01的发言:
楼上的几位,还需要偶写代码吗?

写吧
偶想看看袄


此号自封于2006年11月30日
2006-06-28 09:17
xupeng
Rank: 1
等 级:新手上路
帖 子:4049
专家分:0
注 册:2006-2-12
收藏
得分:0 

using System;

namespace 面试递归题
{
class Class1
{
////////run函数,就调用它就可以了
public static void run(int num)//输入数组个数
{
int[] a = new int[num];
int[] x = new 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,num,a,x);//开始递归调用,compute是递归函数,层数,和,个数,数组,数组
}
////////////compute函数,由程序的run函数自动调用,不用手动调用
public static void compute(int t,int sum,int num,int[] a,int[] x)//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()+":"+x[i].ToString());////////经过了修改,加了个+x[i].ToString(),不好意思啊!
}
Console.WriteLine("和是:"+sum.ToString());
Console.WriteLine("---------------------------------------------------------------");
}
else
{
for(int i=0;i<300;i++)///////////分成300种情况
{
int sumnei=sum;////注意这个变量的定义,我刚刚就错在这个地方了
x[t-1]=i;
sumnei=sum+(a[t-1]*x[t-1]);
if(sumnei<300)//////////如果有满足条件的可能,再深入调用
{
compute(t+1,sumnei,num,a,x);
}
else
{
return;////以知不可能满足条件,即已经超范围了.
}
}
}
}


[STAThread]
static void Main(string[] args)
{
int num;
Console.WriteLine("请输入数组个数!");
num=Convert.ToInt32(Console.ReadLine());
run(num);
}
}
}

[此贴子已经被作者于2006-6-28 20:39:55编辑过]


反清复明 http://xupeng.
2006-06-28 13:55
noshow
Rank: 2
等 级:新手上路
威 望:4
帖 子:1127
专家分:0
注 册:2006-4-21
收藏
得分:0 

[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];
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
你看是不是我改你的程序改出问题了


此号自封于2006年11月30日
2006-06-28 14:25
快速回复:[求助]一个C#面试题,大家看看怎么做!!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023984 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved