I want to write a recursive Function that can calculate the sum of all the digit. If the input is 12345 then the answer will be 1+2+3+4+5 , without using string2num and loop.
조회 수: 26 (최근 30일)
이전 댓글 표시
function output= digit_sum(n)
if n<10
output=fix(n);
end
if n>0
output=output+digit_sum(n*0.1);
end
end
I wrote this code but the problem I am facing is if i set output=0; anywhere then in all the recalling function process my result will turn to be 0, How to Solve this ?
댓글 수: 4
James Tursa
2020년 8월 17일
편집: James Tursa
2020년 8월 17일
Maybe you should take a step back and write down the algorithm on paper using words instead of code. Then take a simple 2 digit example and run it through your algorithm on paper. Once you have things figured out for your algorithm, then turn it into code and start testing. That will force you to understand the algorithm first, before you even get to the coding stage.
채택된 답변
David Hill
2020년 8월 17일
function output= digit_sum(n,a)
if nargin==1
a=0;
end
if n<10
output=a+fix(n);
else
output=digit_sum(floor(n*.1),a+mod(n,10));
end
end
댓글 수: 3
David Hill
2020년 8월 17일
Using nargin, your function can have 1 or more inputs.
output = digit_sum(12345);
Try the above on my function.
추가 답변 (7개)
Saptarshi Neogi
2020년 8월 30일
You can do this with any inbuit functions.
function x = digit_sum(n)
x=0;
if n>0
x=mod(n,10)+digit_sum(floor(n./10));%recursive
end
댓글 수: 0
Sanjay Raju
2020년 9월 13일
function x=digit_sum(inp)
if inp<10
x=inp;
else
x = mod(inp,10) + digit_sum(fix(inp/10));
end
end
댓글 수: 0
Farhath Surayya
2020년 11월 19일
function output= digit_sum(n) if n<10 output=fix(n); end if n>0 output=output+digit_sum(n*0.1); end end
댓글 수: 0
Ramesh Patel
2021년 7월 22일
function sum = digit_sum(num)
if fix(num)==0
sum=0;
else
x = fix(num/10);
sum = rem(num,10) + digit_sum(x);
end
end
%is this code correct.output is right but i am not able to understand when
%if fix(num)==0 condition will true than value of sum should be zero. but
% zero is not output ,why?
댓글 수: 0
Ans sadiq
2021년 8월 19일
function out=digit_sum(in)
q=in;
a=q/10;
b=floor(a);
c=q-b*10;
w=c;
if q>0
w=w+digit_sum(b);
end
out=w;
end
댓글 수: 0
Selman Baysal
2022년 1월 5일
Hi, i have just done this homework. Here is my code:
function output = digit_sum(A)
remA = rem(A,10); % calculates the last digit of A
if isequal(A,0)
output = 0;
else
A = (A-rem(A,10))/10; % gives the new A with substracting the last digit
output = remA + digit_sum(A);
end
end
댓글 수: 0
youssef
2023년 10월 25일
function x=digit_sum(n)
x=0;
if n<=0
x=0;
else
x=x+mod(n,10)+digit_sum((n-mod(n,10))/10);
end
end
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Fourier Analysis and Filtering에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!