有这样一列数 1 3 6 11 19 ....
求第十九位数
请用C# 递归实现这是我面试时候公司出的笔试题
求第十九位数
请用C# 递归实现这是我面试时候公司出的笔试题
解决方案 »
- RichTextBoxEx加入自定义链接后,RTF属性没变化啊
- 在 ClickOnce 中发布时如何签名 exe 文件?
- DllRegisterServer注册失败
- 如何判断当前程序执行的是Console Application 还是 Windows Application.
- 关于动态调用控件的问题....
- [讨论]C#学习经验和优秀图书推荐,新手老手都进来聊聊吧!
- 如何将多个语音文件合并成一个文件
- 代码Framework从2.0到3.5
- 15.625毫秒(1/64秒)这个特殊的数值含义
- 一个很笨的问题!
- 关于正则验证整数的问题
- DataGridView+checkbox选中多行,再根据主键从数据库中取出选中行的具体内容
private int getValue(int n)
{
if (1 == n)
{
return 1;
}
else if (2 == n)
{
return 3;
}
else
{
return getValue(n - 1) + getValue(n - 2) + 2;
}
}
0 + 1= 3-2
1 + 3= 6-2
3 + 6=11-2
6 +11=19-2
11+19=??-2
private static int GetData(int count)
{
if (count <= 1)
{
return 1;
}
else if (count == 2)
{
return 3;
}
else
{
return GetData(count - 1) + GetData(count - 2) + 2;
}
}
比较笨的方法~
所以方法如下
public int GetNo(int n)
{
int resultNo = 0;
if (n == 1)
{
resultNo = 1;
}
else
if (n == 2)
{
resultNo = 3;
}
else
if (n == 3)
{
resultNo = 6;
}
else
{
resultNo = GetNo(n - 1) * 2 - GetNo(n - 3);
}
return resultNo;
}
改下 private int getValue(int n)
{
if (1 == n)
{
return 1;
}
else if (2 == n)
{
return 3;
}
else if(0 >= n)
{
return 0;
}
{
return getValue(n - 1) * 2 - getValue(n - 2);
}
}