数组最值&斐波拉契数列

Day 4.29 小题总结

Test 1:求数组最值及其对应下标

注意:获取最值的比较条件!!!

#include<stdio.h>
int main() {
	int a[10], n, max, min, posMax, posMin;
	for (n = 0; n < 10; n++) {
		scanf("%d", &a[n]);            //数组初始化
	}				
	max = min = a[0];
	for (n = 0; n<10; n++) {
	/*获取最大值及数组下标*/
		if (a[n]>max) {              
			max = a[n];
			posMax = n ;
		}
		/*获取最小值数组下标*/
		else if (a[n] < min) {
			min = a[n];
			posMin = n ;
		}
	}
	printf("max=%d,posMax=%d\n", max, posMax);
	printf("min=%d,posMin=%d\n", min, posMin);

}

Test 2:递归+循环迭代2种方法求斐波拉契数列

一、什麽是斐波拉契数列?

斐波拉契数列特点是第N项总是等于前两项之和

一般是从第一项和第二项都是1开始:例如

1 1 2 3 5 8 13 21 34 55 59…

二、C中的常见题型
2.1 问题:编写一个程序,用户输入整数 N,程序打印前 N 项斐波那契数并求和;

如输入N=7 ,运行结果是:
1 1 2 3 5 8 13
1 + 1 + 2 + 3 + 5 + 8 + 13 = 33
———————————————————————————————

2.2 求解方法有两种,迭代法(又称循环法)和递归法;
法一:迭代法(也称循环法)
#include<stdio.h>
#include<stdlib.h>
int main()
{
	long int *f;
	int n, i;
	long int sum = 0;
	printf("input n:");
	scanf("%d", &n);
	/*为数组f申请动态内存*/
	f = (long int*)malloc(sizeof(long int)*n);	 
	f[0] = 0;
	f[1] = 1;
	/*从第2项其,后一项等于前2项的和*/
	for (i = 2; i <= n; i++)
	{
		f[i] = f[i - 1] + f[i - 2];   
	}
	for (i = 1; i <= n; i++)
	{
		printf("%-6d", f[i]);
		//换行
		if (i % 6 == 0)
		{
			printf("\n");
		}
	}
	printf("\n");
	for (i = 0; i < n; i++)
	{
		sum += f[i];
	}
	printf("sum =%d\n", sum);
	return 0;
}

结果:
在这里插入图片描述

法二:递归法
#include<stdio.h>
//递归法
 int fibonacci(int n)
 {
	if (n == 1 || n == 2)
	{
		return 1;
	}
	return fibonacci(n - 1) + fibonacci(n - 2);
}

int main(void)
{
	int  n;
	int sum = 0;
	int ret = 0;
	printf("输入要求的斐波拉契数列项数n:");
	scanf("%d", &n);
	for (int i = 1; i <= n; i++)
	{
		ret = fibonacci(i);
		sum = sum + ret;//计算前n项和
		printf("%d\n", ret);//打印前n项的每个数
	}
	printf("第%d项 = %d\n", n, ret);
	printf("前%d项和 sum= %d\n", n, sum);
	return 0;
}

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值