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.
Afficher commentaires plus anciens
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 commentaires
Stephen23
le 17 Août 2020
When n>=10 then you do not define output before that line, so when you refer to
... output + ...
MATLAB has no idea what output should be, because you have not defined it.
You need to consider your logic so that output is defined for all values before you try to use it.
Asif Ahmed
le 17 Août 2020
James Tursa
le 17 Août 2020
Modifié(e) : James Tursa
le 17 Août 2020
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.
Asif Ahmed
le 17 Août 2020
Modifié(e) : Asif Ahmed
le 17 Août 2020
Réponse acceptée
Plus de réponses (7)
Saptarshi Neogi
le 30 Août 2020
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
Sanjay Raju
le 13 Sep 2020
function x=digit_sum(inp)
if inp<10
x=inp;
else
x = mod(inp,10) + digit_sum(fix(inp/10));
end
end
Farhath Surayya
le 19 Nov 2020
0 votes
function output= digit_sum(n) if n<10 output=fix(n); end if n>0 output=output+digit_sum(n*0.1); end end
Ramesh Patel
le 22 Juil 2021
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?
Ans sadiq
le 19 Août 2021
0 votes
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
Selman Baysal
le 5 Jan 2022
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
youssef
le 25 Oct 2023
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
Catégories
En savoir plus sur Programming dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!