又有一个Visual C++题目,简单!

来源:百度知道 编辑:UC知道 时间:2024/06/04 23:00:30
#include<stdio.h>
#include<math.h>
#include<conio.h>
unsigned long fun(int t)
{
int p;
if(t==0)
p=0;
if(t==1)
p=1;
else
p=fun(t-1)+fun(t-2);
return p;
}
void main()
{
int n;
unsigned long f;
n=1000;
f=fun(n);
printf("n=%d\n",n);
printf("f=%ld\n",f);
}

这个题目我要求的是fun(1000)
fun(0)=0;fun(1)=1;fun(n)=fun(n-1)+fun(n-2)
请问哪个地方错了!
还有就是平常我们用%d 来输出int型的数据,那么其他类型的数据有哪些相应的输出语法呢?(可能我上面写的那个%ld就有错误,因为我不懂...
Draconious 你的好像有错误啊,不能求出正确答案
是图中的第一题,请高手再看看!图片可能会不太清晰,在线等回复

你在函数里是把一个整数作为long型的,所以一旦太大就变成负的了。
ld输出整数没什么问题。输出总共有九种格式:
d 带符号十进制整数
o 无符号八进制整数
x 无符号十六进制整数
u 无符号十进制整数
c 字符
s 字符串
f 以小数形式输出浮点数,和精度无关
e 以科学计数发输出浮点数
g %f和%e之中选一个较短的,不输出无意义的0
另外d,o,x,u之前都可以加l表示长整型,不能用在其他类型上

你用递归算的话fun(1000)半个小时也算不完,这是个快点的:
#include <stdio.h>

unsigned long fun(int t)
{
unsigned long a=1, b=0, temp;

if(t==0) return 0;
else if(t==1) return 1;
else{
while(t>1){
temp=a;
a=a+b;
b=temp;
t--;
}
return a;
}

}

int main()
{
int n=1000;
unsigned long f;
f=fun(n);
printf("n=%d\n",n);
printf("f=%ld\n",f);
return 0;
}

之前那个有些问题,这个没问题了。
你那道题是从哪来的?有没有搞错?Fibonacci第1000项等于1597?开玩笑也要有个限度。

仅供参考:
你那个n太大了,估计要求很长时间,还不一定能求出来

#include<stdio.h>
#include<math.h>
#include<conio.h>