| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1223 人关注过本帖
标题:初学C语言,好难的不懂,一个菜鸟的问题,求代码请教下
只看楼主 加入收藏
victorchang
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-3-8
收藏
 问题点数:0 回复次数:14 
初学C语言,好难的不懂,一个菜鸟的问题,求代码请教下
Negative indexed Fibonacci numbers is a sequence of numbers, where each number (except the first two) is the difference of the two preceding numbers. The first two are 0 and -1.
0, -1, 1, -2, 3, -5, 8, -13, 21, …
Write a program to input a number n ( 0), and print the nth negative indexed Fibonacci number (starting from the 0th number.)
Tip: You may establish a loop and compute two consecutive Fibonacci numbers in each iteration. Also, the numbers can be very large, use variables of type long long to hold them.

[此贴子已经被作者于2007-3-9 12:32:08编辑过]

搜索更多相关主题的帖子: C语言 代码 初学 
2007-03-09 12:21
半支烟
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2007-1-16
收藏
得分:0 
不就是一个Fibonacci数列然后正负轮流嘛。。。

2007-03-09 12:23
victorchang
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-3-8
收藏
得分:0 
那麻烦大哥编下啊,小弟我刚学C,不是很懂
2007-03-09 12:25
半支烟
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2007-1-16
收藏
得分:0 

the numbers can be very large 。。。
你得考虑用其他的数据类型来放这个数了,刚学C就做这种题呢。。


2007-03-09 12:30
victorchang
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-3-8
收藏
得分:0 
没办法啊,这里的老师要求的,可真的不很会,那大哥把它编译一下可以伐?晕了,很难?
2007-03-09 12:34
半支烟
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2007-1-16
收藏
得分:0 
不知道这个题是不是要求要用数组或着链表等来装这个数,如果是的话,那是有那么一点麻烦。。

2007-03-09 12:38
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 
#include<stdio.h>
#define N 100
main()
{
int i,t=-1,n;
double a[N];
a[0]=0;
a[1]=-1;
printf("please enter n:");
scanf("%d",&n);
printf("%15f\n,%15f\n",a[0],a[1]);
for(i=2;i<n;i++)
{ a[i]=a[i-1]*t+a[i-2]*t*(-1);
t=t*(-1);
a[i]=a[i]*t;
printf("%15f\n",a[i]);
}
}

[此贴子已经被作者于2007-3-9 22:12:24编辑过]


雁无留踪之意,水无取影之心
2007-03-09 12:40
半支烟
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2007-1-16
收藏
得分:0 

[CODE]#include <stdio.h>
const int MAX = 10000;
int FirstNum[MAX],SecondNum[MAX],TotalNum[MAX];
void InitNum();
void add();
void output(int n);
void main()
{
InitNum();
int n,index = 0;
scanf("%d",&n);
if ( 1 == n ) {puts("0\n");return;}
if ( 2 == n ) {puts("-1\n");return;}
while ( index < n-2 )
{
index++;
add();
}
output(n);
}
void InitNum()
{
for ( int i = 0; i< MAX; i++ )
{
FirstNum[i] = 0;
SecondNum[i] = 0;
TotalNum[i] = 0;
}
SecondNum[MAX-1] = 1;
}
void add()
{
for ( int i = 0; i < MAX; i++ )
TotalNum[i] = 0;
int result,jinwei = 0;
for ( i = MAX-1; i >= 0; i-- )
{
result = FirstNum[i] + SecondNum[i] + jinwei;
TotalNum[i] = result % 10;
jinwei = result / 10;
}
for ( i = 0; i < MAX; i++)
{
FirstNum[i] = SecondNum[i];
SecondNum[i] = TotalNum[i];
}
}
void output(int n)
{
if ( n % 2 == 0 ) putchar('-');
int i = 0;
while ( !TotalNum[i] ) i++;
for ( ; i < MAX; i++ )
printf("%d",TotalNum[i]);

putchar('\n');
}[/CODE]

用数组装载数据,可以输出长度为MAX的数。。



[此贴子已经被作者于2007-3-9 13:09:38编辑过]


2007-03-09 13:05
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 

#include <stdio.h>

int main(void)
{
long long a=0,b=1,c=1;
int n,i;
scanf("%d",&n);
if(n==0) { printf("0"); return 0; }
for(i=1;i<n;i++)
{
c=a+b;
a=b;
b=c;
}
if(n%2) printf("-%ld",c); else printf("%ld",c);
return 0;
}


[此贴子已经被作者于2007-3-9 18:42:49编辑过]


My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2007-03-09 18:42
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
以上为第推,应该是最简单,最容易实现并且最快的算法了

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2007-03-09 18:43
快速回复:初学C语言,好难的不懂,一个菜鸟的问题,求代码请教下
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018321 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved