黑马程序员技术交流社区
标题:
基础测试题目分享 斐波那契数列第n项
[打印本页]
作者:
麻木
时间:
2015-4-22 09:48
标题:
基础测试题目分享 斐波那契数列第n项
/**
*2.求斐波那契数列第n项,n<30,斐波那契数列前10项为 1,1,2,3,5,8,13,21,34,55。
*/
#import <Foundation/Foundation.h>
//1.定义一个斐波那契数列函数fibonacci,输入参数是第n项,返回项目是第n项的斐波那契数.
NSInteger fibonacci(NSInteger n)
{
//1.1这里我采用递归的方法来实现本函数
//1.1.1如果n小于1,强制把n赋值为1
if(n < 1) n = 1;
//1.1.2如果当n等于1或者2的时候直接返回值1
if(n == 1||n ==2)
{
return 1;
}
//1.1.3当为其他n值的时候,根据斐波那契数列的特点直接递归调用前两个斐波那契数的和即可
else
return fibonacci(n-1) + fibonacci(n-2);
/*
1.2其实对于这个题目,因为斐波那契数列是一个固定的数组,在只需要求较小n项的情况下,
我比较倾向于直接定义一个数组 然后把斐波那契数列加进去,要用的时候直接查表就可以得到了。
*/
}
int main(int argc, const char * argv[])
{
@autoreleasepool {
//2.系统提示用户输入一个大于0的整数
NSLog(@"请输入一个区间为[1,30)的n值,n代表第n项斐波那契数,系统自动打印出该项的斐波那契数");
//3.定义一个整型变量inputNumber
NSInteger inputNumber = 0;
//3.1系统输入赋值给inputNumber
scanf("%d",&inputNumber);
//4.输入数据安全性判定,如果输入n值不在区间[1,30),则提示用户重新输入
while(inputNumber < 1 || inputNumber >= 30)
{
//4.1屏幕输出信息提示用户输入数字不满足要求,需要重新输入
NSLog(@"输入n值的范围是[1,30),请重新输入");
//4.2重新系统输入赋值给inputNumber
scanf("%d",&inputNumber);
}
//输出第n项的斐波那契数到屏幕
NSLog(@"第%d项的斐波那契数为%d",inputNumber,fibonacci(inputNumber));
}
return 0;
}
复制代码
作者:
透亮心情
时间:
2015-4-22 12:05
这个是入学测试还是面试的?听说面试手写代码?这不是要人命嘛
作者:
傲弛天下
时间:
2015-4-22 12:38
同样想知道,面试时的编程题,会不会用纯C来编
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2