【发布时间】:2022-12-09 11:35:11
【问题描述】:
我有一个链表,我想将其填充到某个循环编号。我下面的代码显示了使用 C 链表的斐波那契数列。
这是我没有任何循环的代码:
#include <stdio.h>
#include <stdlib.h>
typedef struct Node
{
int count;
int fibo;
struct Node* next;
}node;
int
fibo(int val){
if(val == 1 || val == 2) {
return 1;
}
return fibo(val - 1) + fibo(val - 2);
}
int
main (void)
{
node f1, f2, f3;
f1.count = 1;
f1.fibo = fibo(1);
f2.count = 2;
f2.fibo = fibo(2);
f3.count = 3;
f3.fibo = fibo(3);
f1.next = &f2;
f2.next = &f3;
f3.next = NULL;
printf("f1 fibo : %i\n", f1.fibo);
printf("f2 fibo : %i\n", f2.fibo);
printf("f3 fibo : %i\n", f3.fibo);
return (0);
}
现在我想通过循环来做到这一点。我该怎么做?
【问题讨论】:
-
为什么需要斐波那契数列的链表?为什么递归
fibo函数会为每个项重新计算整个序列? -
缩进代码时,切勿使用制表符,因为每个文字处理器//编辑器的制表位/制表符宽度设置不同。建议始终为每个缩进级别使用 4 个空格,因为它足够宽,可以看到,即使使用可变宽度字体,也允许在页面上使用多个缩进级别
-
为了便于理解和阅读,1) 遵循公理:每行只有一个语句,每个语句(最多)一个变量声明。2) 使用有意义的变量名。变量名称应指示用途或内容(或更好的是,两者)。
-
你知道如何实现链表吗?你知道如何将另一个元素附加到链表吗?你知道如何通过
malloc()函数分配内存吗?你知道怎么写循环吗? -
fibo()函数不需要使用递归。只有几个静态变量可以保存前两个计算出的数字。
标签: c