- /**
- *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;
- }
复制代码 |
|