您的位置:首页 > 其它

Fibonacci数列变例之一

2013-01-30 20:59 155 查看
题目来自昨天看到的一篇博客,在一个变形的Fibonacci数列中,求第N个数。变形之处是,当前两个数之和大于10时,将和拆成两个一位数。比如:

0 2 2 4 6 1 0 1 1 2 3 5 8 1 3

3 4 7 1 1 2 3 5 8 1 3 4 7 1 1

算法很简单,基本逻辑是根据前两个数是否大于10决定之后一个数或两个数,一种例外情况是头两个数都是0。

int GetSumNum(int a, int b, int n)
{
if(a<0 || b<0 || n<1)
{
printf("Invalid input parameter!!!");
return -1;
}
if(a==0 && b==0)
return 0;

while(n>2)
{
int c = a+b;
if(c > 9)
{
a = 1;
b = c - 10;
n-=2;
}
else
{
a=b;
b=c;
n--;
}
}

if(n==2)
return b;
else if (n==1)
return a;
else
return -1;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: