Fibonacci数列变例之一

来源:互联网 发布:vb 对象库未注册 编辑:程序博客网 时间:2024/04/29 04:39

题目来自昨天看到的一篇博客,在一个变形的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;}