主要思路:
1.首先计算一个包含最大数据范围的fibonacci数表;
2.逆序循环遍历数表,对输入整数进行拆解。
/*--------------------------------------------------------------------
功能:将任意一个整数转换成几个fibonacci数之和
可以有多行输入,每行一个整数(本程序范围以10000以内为例),最后以0结束输入;
输入示例:
45
99
100
1000
10000
0
输出示例:
45 = 34 + 8 + 3
99 = 89 + 8 + 2
100 = 89 + 8 + 3
1000 = 987 + 13
10000 = 6765 + 2584 + 610 + 34 + 5 + 2
---------------------------------------------------------------------
Author:Zhang Kaizhou
Date: 2019-3-15 10:26:10
-------------------------------------------------------------------*/
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 50
#define N 22
int fibonacci_table[MAXSIZE];
typedef struct node{ // 定义一个结点数据类型用于存放原始数据及最终结果
int num;
int res[MAXSIZE];
int len;
struct node * pnext;
} Node;
void init_fibonacci_table();
void compute_res