matlab 1.编写第一个水仙花数 2. 已知某数组的元素满足:ak+3=1/2(ak+ak+1+ak+2),k=1,2,3,且a1=3,a2=6,a3=9.编程实现该数组中第一个被5整除的数 3. 利用函数的递归调用求 s=5!
时间: 2024-10-13 13:09:42 浏览: 34
数组及向量运算-matlab7从入门到精通第2章 PPT
1. 编写第一个水仙花数( narcissistic number )在MATLAB中可以这样做:
```matlab
function is_narcissistic(n)
digits = num2str(n);
sum_of_squares = sum(double(digits).^3);
if n == sum_of_squares
disp([num2str(n) ' 是一个水仙花数。'])
else
disp([num2str(n) ' 不是一个水仙花数。']);
end
end
% 测试从1开始寻找首个水仙花数
for i = 100
is_narcissistic(i);
if rem(i, 5) == 0 % 检查是否能被5整除
break;
end
end
```
运行这段代码会找到第一个被5整除的水仙花数。
2. 对于给定条件的数组,我们可以创建一个循环并检查每个元素,直到找到第一个被5整除的数:
```matlab
a = [3, 6, 9]; % 定义初始数组
for k = 1:numel(a)
ak_plus_3 = a(k) + 3;
if mod(ak_plus_3, 5) == 0
disp(['找到的第一个被5整除的数是:', num2str(ak_plus_3)]);
break;
end
a(k+1) = 1/2 * (ak_plus_3 + a(k) + a(k+1)); % 根据条件计算下一个值
end
```
3. 利用MATLAB的递归功能计算阶乘5!:
```matlab
function s = factorial_recursive(n)
if n <= 1
s = 1;
else
s = n * factorial_recursive(n - 1);
end
end
s = factorial_recursive(5);
disp(['5! 的结果是:', num2str(s)])
```
以上代码分别实现了三个需求。
阅读全文